Java 在@FormParam字段中使用Swagger UI@ApiParam注释
我构建了一个RestEasy API,并将其与Swagger UI链接。我被要求完成的一项任务是,找到一种方法来减少方法签名中的查询参数,并用某种“DTO”来处理它们 我的原始实现类似于:Java 在@FormParam字段中使用Swagger UI@ApiParam注释,java,api,jax-rs,resteasy,swagger,Java,Api,Jax Rs,Resteasy,Swagger,我构建了一个RestEasy API,并将其与Swagger UI链接。我被要求完成的一项任务是,找到一种方法来减少方法签名中的查询参数,并用某种“DTO”来处理它们 我的原始实现类似于: @GET @ApiOperation(value = "echo test value", notes = "echo test notes") @ApiResponse(code = HttpServletResponse.SC_OK, message = "Response.status.OK
@GET
@ApiOperation(value = "echo test value", notes = "echo test notes")
@ApiResponse(code = HttpServletResponse.SC_OK, message = "Response.status.OK")
public Response echoTest(
@ApiParam("id") @QueryParameter("id") final int id,
@ApiParam("fName") @QueryParameter("fName") final String fName,
@ApiParam("sName") @QueryParameter("sName") final String sName) {
// handle request
}
我已经将查询参数处理提取到DTO,尽管现在我不确定如何处理虚张声势的UI方面的事情。我曾尝试在DTO中注释字段,但正如我所猜测的那样,这不起作用。我的当前解决方案没有正确的招摇过市ui交互:
@GET
@ApiOperation(value = "echo test value", notes = "echo test notes")
@ApiResponse(code = HttpServletResponse.SC_OK, message = "Response.status.OK")
public Response echoTest(@ApiParam("form") @FormParam QueryDTO dto) {
//Handle request
}
QueryDTO.java:
public class QueryDTO {
@ApiParam(name = "id", value = "user id") @QueryParam("id") private int id;
@ApiParam(name = "fName", value = "user first name") @QueryParam("fName") private String fName;
@ApiParam(name = "sName", value = "user surname") @QueryParam("sName) private String sName;
// Getters,setters etc
}
SwaggerUI支持这种类型的功能吗?有适合我的用例的替代方法吗?感谢您的任何建议或帮助。这里的问题不是招摇过市的用户界面,而是招摇过市的核心 Swagger Core不支持RESTEasy的@Form注释,只支持标准JAX-RS注释 在您提到该注释之前,我对它并不熟悉,但它的作用方式似乎与JAX-RS2.0中引入的@BeanParam相同。RESTEasy 3.0及以上版本应提供对它的支持。Swagger core能够处理@BeanParam以生成适当的文档
如果您仍然希望只支持@Form,那么必须在Swagger Core的存储库中打开一个问题。我在文档中注意到了这一点,正在尝试使用@BeanParam解决方案-谢谢。