2014-09-18 88 views
1

我想用Swagger来记录我的一个java API(在Apache CXF中实现),它使用Bean Param接收它的参数。喜欢的东西:Swagger文档的BeanParam

@GET 
@Produces({SemanticMediaType.JSON_LD, MediaType.APPLICATION_JSON_VALUE}) 
@ApiOperation(value = "Retrieves Themes", position = 0) 
@ApiResponses(value = {@ApiResponse(code = 200, 
     message = "Retrieval was successful"), @ApiResponse(code = 403, 
     message = "Missing or invalid x-business-group-id header"), @ApiResponse(code = 500, 
     message = "Internal server error")}) 
public Response get(@QueryParam(URI_PARAM_NAME) String uri, 
        final @ApiParam @Valid @BeanParam ThemeParams themeParams) { ... } 

,我读了扬鞭已经实现了BeanParams支持,但是当我尝试运行它,在招摇的UI,我只看到一个参数叫做“体”和一个文本字段,没有亲戚关系我的BeanParam的内容。

有人可以提供一些帮助吗?

回答

1

这有点旧,但对于那些有同样问题的人,这里是我发现的帮助。

  • 如果您使用DefaultJaxrsConfig,请将其更改为JerseyJaxrsConfig。
  • 如果您链接到招摇 - 新泽西州JAXRS _...,将其更改为招摇,jersey2-jxsrs _...
0

你可以参考。

@POST 
    @Path("/users") 
    @ApiOperation(value = "vdc", position = 1, notes = "vdc") 
    @ApiResponses(value = { 
      @ApiResponse(code = 200, message = "OK",response=UserCreateResponse.class), 
      @ApiResponse(code = 30601, message = "'httpcode': 400 'Errormsg': Request Params Not Valid"), 
      @ApiResponse(code = 30602, message = "'httpcode':404 'Errormsg': Data Required Not Found"), 
      @ApiResponse(code = 30603, message = "'httpcode':405 'Errormsg': Method Not Allowed"), 
      @ApiResponse(code = 30604, message = "'httpcode':408 'Errormsg': Request Time Expires Timeout"), 
      @ApiResponse(code = 30605, message = "'httpcode':500 'Errormsg': Internal Server Error") }) 
    public Response createUsersWithArrayInput(
      @ApiParam(value = "ID", name = "platform_id", required = true) @QueryParam(value = "platform_id") String platformId, 
      @ApiParam(value="body",name="user",required=true)UserCreate userCreate) {} 

UserCreate.java

@ApiModel("UserCreate") 
public class UserCreate { 
     @ApiModelProperty(value="VDC Id",required=false) 
     @JsonStringSchema(optional=true,description="VDC Id") 
     private String vdcId; 
     @ApiModelProperty(value="description",required=true) 

     private String name; 
     @ApiModelProperty(value="description",required=false) 

     private String password; 
     }