以 url 形式编码的球衣端点的 Swagger

Swagger for jersey endpoint with form url encoded

我有一个带有 jersey 2.17 的 DropWizard 项目,带有一个简单的表单提交端点:

@Path("forms/{form_id}")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@ApiOperation(value = "Submit a form", response = SubmittedForm.class)
@ApiResponses(value = {
    @ApiResponse(code = 200, message = "Valid request - form submitted", response = SubmittedForm.class)
})
public Response submitForm(@PathParam("form_id") String formId, MultivaluedMap<String, String> parameters) {
    ...
}

我正在使用 Swagger (swagger-jersey2-jaxrs 1.5.4) 来记录我的 API。但是,对于此端点,没有为表单参数生成文档。如果我将 MultivaluedMap<String, String> 更改为 MultivaluedStringMap,则会生成文档,但它被识别为正文参数。 我不能将 @PathParam 用于表单参数,因为此端点将支持多个表单定义,因此密钥未知。

有什么方法可以使用 Swagger 正确记录表单提交端点(使用 url 编码的参数)?

swagger规范中不允许任意映射,因此扫描操作时不会检测到。根据 the spec,表单参数仅支持 可序列化 类型。