Java 如何对具有复杂对象的Spring GET@RequestMapping进行大摇大摆的注释
问题是,我有一个复杂的对象作为GET请求的请求参数,在我将招摇过市注释放在对象内部之后。Swagger UI显示条目参数是一个主体,我必须在其中放置参数Java 如何对具有复杂对象的Spring GET@RequestMapping进行大摇大摆的注释,java,spring,spring-mvc,swagger,swagger-ui,Java,Spring,Spring Mvc,Swagger,Swagger Ui,问题是,我有一个复杂的对象作为GET请求的请求参数,在我将招摇过市注释放在对象内部之后。Swagger UI显示条目参数是一个主体,我必须在其中放置参数 body: { "modelId": 0, "makeId": 0 } 我的REST控制器看起来像这样 @RequestMapping(method = RequestMethod.GET, value = "/model") public SearchModelsResponse searchMod
body: {
"modelId": 0,
"makeId": 0
}
我的REST控制器看起来像这样
@RequestMapping(method = RequestMethod.GET, value = "/model")
public SearchModelsResponse searchModels(
@ApiParam(value = "Search for something",
required = true) final ModelSearch search) {...}
和请求对象
public class ModelSearch {
@ApiParam(value = "Something important)", required = true)
private Long modelId;
@ApiParam(value = "Something else important)", required = false)
@Nullable
private Long makeId;
....
}
有没有一种方法可以正确地对其进行注释,以便Swagger将其正确地显示为请求参数,而不是主体构造?好的,这种情况下的解决方案是手动定义参数,这可以通过
@apimplicitparam
注释实现
所以结果看起来像这样
@ApiImplicitParams({
@ApiImplicitParam(name = "modelId", value = "this is modelId", required = true, dataType = "string", paramType = "query"),
@ApiImplicitParam(name = "makeId", value = "this is makeId", required = true, dataType = "string", paramType = "query")
})
@RequestMapping(method = RequestMethod.GET, value = "/model")
public SearchModelsResponse searchModels(
final ModelSearch search) {...}
这不是一个完美的解决方案,因为我实际上希望swagger解释我的代码,但结果提供了将其显示为请求参数而不是主体结构的选项。对象作为请求参数?我不这么认为。只支持原语作为请求参数。它在Spring端运行良好,Jackson在反序列化过程中没有问题。唯一会被打断的是招摇过市。确切地说,我的意思是招摇过市不支持它。在春天,你可以拥有你想要的任何东西。这种实现在GET方法上常见吗?我看到一些实现还带有一个要反序列化的对象,而不是原语。