swagger-ui及swagger用法

默认的swagger-ui好用但是不够美观,为了让生成的文档更加可观,我们可以使用swagger-ui-layer 来美化。

swagger-ui-layer,基于layui 开源的swagger-ui的替换。界面大气,使用起来也很方便。swagger-ui-layer 依于swagger的功能,所以在原先项目中导入以下依赖即可


    com.github.caspar-chen
    swagger-ui-layer
    1.1.3

注意:

  • 需要注意的一点是 swagger api 的默认地址是/v2/api-docs 所以swagger-ui-layer也读取的是默认地址, 所以在new Docket()的时候不能指定group参数,否则 swagger api 的地址会在后面加入group的参数导致swagger-ui-layer不能正确请求到数据

  • swagger-ui-layer 的默认访问地是 http://{port}/docs.html

使用规则:

一、在返回对象类上中要使用注解@ApiModel(value="实体类对象", description="实体类描述"),对象字段上使用@ApiModelProperty(value=”字段说明“,required=”是否必填”)表示对model属性的说明

注意:@ApiModel value 不能同名,否则会导致参数乱窜.

image.png

二、@API使用在Controller类上,表明是swagger资源

@Api(value = "仓库管理controller", tags = {"仓库管理接口"})

三、在每个接口方法中使用注解@ApiOperation(value = “接口说明”, httpMethod = “接口请求方式”, response = “接口返回参数类型”, notes = “接口发布说明”);表示一个http请求的操作

image.png

四、 @RequestBody和@ApiImplicitParam不能共用

@RequestBody主要用来接收前端传递给后端的json字符串中的数据的,如果想要swagger显示出实体类的参数描述信息要在实体类上使用@ApiModel(value="")

原先:在接口方法中会使用@ApiImplicitParam(name = "vo", value = "用户实体类", paramType = "body", required = true, dataType = "UserVo") 但@RequestBody和@ApiImplicitParam注解,会使实体类参数描述信息显示不出来,所以@ApiImplicitParam适用于没有接收实体类参数的方法

image.png

五、 @ApiParam 用于 Controller 中方法的参数说明。如图所示。

image.png

六、如果接口中,实体参数的描述没有显示出来可以加上@ModelAttribute 注解

image.png

七、通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过@PathVariable(“xxx“) 绑定到操作方法的入参中。在swagger接口文档中,不会显示出这个占位符的具体信息,如下不会显示出这个id的说明

image.png

建议使用@ApiParam注解:

image.png

也可以使用@ApiImplicitParam对接收的参数进行解释

image.png

注意:

  • 使用的时候要确保name与@pathVariable中的value值保持一致,否则就会显示出两个参数,如下图:
image.png
image.png
  • 要写就要写完整,如下不完整的话也有问题
image.png
image.png
  • 多个参数值的,不能只写一个,如下
image.png
image.png

要改成这样

image.png

八、在使用@RequestParam注解,获得前台传递的值,一般要结合@ApiParam注解使用

@ApiImplicitParam(name = "name", value = "name", paramType = "query", dataType = "Long")表示参数来源与data
@ApiImplicitParam(name = "name", value = "name", paramType = "path", dataType = "Long")表示参数路径

你可能感兴趣的:(swagger-ui及swagger用法)