Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何对具有复杂对象的Spring GET@RequestMapping进行大摇大摆的注释_Java_Spring_Spring Mvc_Swagger_Swagger Ui - Fatal编程技术网

Java 如何对具有复杂对象的Spring GET@RequestMapping进行大摇大摆的注释

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

问题是,我有一个复杂的对象作为GET请求的请求参数,在我将招摇过市注释放在对象内部之后。Swagger UI显示条目参数是一个主体,我必须在其中放置参数

 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方法上常见吗?我看到一些实现还带有一个要反序列化的对象,而不是原语。