Swagger-当我没有为注释编写注释时,为什么Swagger创建一个请求正文字段?

时间:2019-07-25 12:35:45

标签: scala akka swagger swagger-ui swagger-akka-http

我为不需要请求主体的GET请求编写了一个醒目的ui。我没有使用@RequestBody注释,所以Swagger为什么在ui上显示请求正文字段?即使我将其保留为空,也会导致我的API请求失败,并显示以下错误:TypeError: Failed to execute 'fetch' on 'Window': Request with GET/HEAD method cannot have body.

我了解为什么会出现此错误,昂首阔步创建的curl有一个-d选项。但是如何关闭呢?

我唯一使用的注释是@Get@Path@Operation@ApiResponses@Parameters

简单地说,我怎么能告诉我不需要请求正文?

1 个答案:

答案 0 :(得分:0)

如果您未注释方法的某些参数,则会自动将其视为请求正文。如果您不希望这样做,则必须将其显式地注释为其他内容,或使用@ApiParam(hidden = true)这样的注释来忽略参数:

  // example usage of Swagger with Akka HTTP
  @ApiOperation(
    httpMethod = "GET",
    response   = classOf[ApiResponseX],
    value      = "docs"
  )
  @ApiImplicitParams(
    Array(
      new ApiImplicitParam(
        name      = "id",
        dataType  = "string",
        paramType = "query",
        value     = "id docs"
      )
    )
  )
  def fetchX(
    // even if this value has custom handling I have to explicitly ignore it,
    // to not make it into a request body
    @ApiParam(hidden = true) id: UUID
  ): Route = ...