4

MultivaluedMap是否可以使用 Swagger 通过 Jersey 中的参数注释来制作 API 文档?

我有一小段代码是这样的:

/**
 * Method which serves requests of adding {@link StudentGroup} to DB
 * 
 * @param name
 * @param description
 * @return {@link Response}
 * @throws RestServiceException
 */
 @POST
 @Path("/add")
 public Response addStudentGroup(MultivaluedMap<String, String> formParams) throws 
     RestServiceException {
     String name = formParams.getFirst("name");
     String description = formParams.getFirst("description");
     String studentIds = formParams.getFirst("studentIds");

     (...)

}

我想使用 Swagger 和 Swagger UI@ApiParam生成文档数据。JSON

如果我把它放在 formParams@ApiParam之前MultivaluedMap<String, String>它不起作用。Swagger 不能列出任何参数。

4

3 回答 3

2

这似乎是 Swagger 中的一个错误——我也有这种行为。使用具有两个类型参数的其他泛型类(如 @ApiParam() HashMap)可以正常工作。可能它会抛出解析器。

我在 Swagger 错误跟踪系统上为此打开了一个问题

您也可以在他们的 Google 群组中询问他们,或者在 IRC 的 Freenode#swagger 上找到他们。

于 2013-02-13T08:53:37.447 回答
2

我可以像这样解决这个问题。我们可以利用 Swagger API 提供的 @APIImplicitParams 注解来列出 MultiValueMap 的所有表单元素,并在 MultiValueMap 本身上使用 @APIignore。尝试以下代码行中的某些内容是否有效。祝你好运。:)

@ApiOperation(value = "Create a new 'Student' object")
@ApiImplicitParams({
      @ApiImplicitParam(name = "X-ClientId", value = "X-ClientId", required = true, dataType = "String", paramType = "header"),
      @ApiImplicitParam(name = "id", value = "Enter an ID for the student.", dataTypeClass = String.class, paramType = "query"),
      @ApiImplicitParam(name = "name", value = "Enter a Name for the Student.", dataTypeClass = String.class, paramType = "query")
  })
  ResponseEntity addStudent(
      @NotBlank @RequestHeader(value = X_CLIENTID) String headerXclient,
      @ApiIgnore @RequestParam MultiValueMap<String, String> requestParams) {
          StudentRequest request = new StudentRequest(requestParams);

          (... Your Code Implementation ...)
      };
于 2019-06-30T20:40:21.290 回答
1

目前不支持,但正如 Eyal 所说,在 github 问题中有一张票,它可能相当容易实现。

于 2013-04-18T15:43:58.627 回答