1

我刚刚下载了 Swagger-UI 的最后一个发行版......在发送没有 JSON 正文的 DELETE 请求时,它看起来不再有效 - 请注意,这在以前的版本中运行良好。下面是我的注释:

@ApiOperation(
  httpMethod = "DELETE",
  nickname = "delete",
  value = "Deletes an user",
  response = classOf[Void])
@ApiResponses(Array(
  new ApiResponse(code = 400, message = "Invalid user id"),
  new ApiResponse(code = 401, message = "Request not authorized"),
  new ApiResponse(code = 403, message = "User does not have required privileges"),
  new ApiResponse(code = 404, message = "User not found"),
  new ApiResponse(code = 412, message = "Authentication precondition failed"),
  new ApiResponse(code = 500, message = "Error processing delete user request")))
def delete(
  @ApiParam(
    name = "userId",
    value = "The id of the user to delete",
    required = true)
    @PathParam("userId")
    userId: String) = SecuredAction.async { implicit request =>
  ...
}

每当我发送 DELETE 请求时,我总是会收到以下响应(错误请求):

For request 'DELETE /auth/users/5392238c1e04001e04b384b4' [Invalid Json]

同样,我没有修改我的源代码,如果我回滚到以前版本的 Swagger-UI,它会按预期工作。我错过了什么吗?万一有解决方法使它起作用?

4

2 回答 2

2

不确定您是否仍然对此有问题,但在通过 swagger 发送 DELETE 请求时,我也遇到了无效 Json 的问题。

我通过在 swagger.js 中添加一行在代码中解决了这个问题。在 swagger.js 中有一个名为SwaggerRequest.prototype.setHeaders. 在我的版本中,这大约是第 1221 行(对你来说可能是不同的,因为我也更改了一些其他代码)。在这个方法中应该有一个声明

else if (this.type == "DELETE")
  body = "{}";

我将其更改为以下

else if (this.type == "DELETE") {
  body = "{ }";
  params.body = body;
}

然后,如果我通过大摇大摆进行删除,我将不再获得 Invalid Json。

于 2014-08-08T05:48:12.097 回答
0

这是 Swagger UI 发行版中的一个错误。最新版本修复了它。

于 2014-08-08T16:44:16.803 回答