美文网首页
swagger使用实战

swagger使用实战

作者: Geroge1226 | 来源:发表于2020-01-15 16:00 被阅读0次

1. pom.xml 配置依赖

    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.2.2</version>
    </dependency>
    
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.2.2</version>
    </dependency>

2. 配置Swaggerconfig

@Configuration
@EnableSwagger2
public class Swagger2Config {
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("cn.freemud.lsy.controller"))
                .paths(PathSelectors.any())
                .build();
    }
    
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("测试接口Api文档")
                .description("后台各类测试接口 ")
                .termsOfServiceUrl("http://blog.csdn.net/saytime")
                .version("1.0")
                .build();
    }
}

3. @Restcontroller 注解类中添加**

@RestController
@Api(description = "用户操作类",produces = "User_controller")
@RequestMapping("/login")
public class UserController {
    private Logger logger = LoggerFactory.getLogger(UserController.class);

    @ApiOperation(value="用户登录", notes="根据用户ID")
//    @ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Integer", paramType = "path")
    @RequestMapping(value = "/login",method = RequestMethod.POST)
    public String sLogin(HttpServletRequest request){
        return "";
}

4. 启动访问

项目后端访问地址后拼接:swagger-ui.html
http://localhost:8080/swagger-ui.html

5. 效果图

10817794-e62f50461e282dcc.png

6、Swagger注解说明

@Api:用在请求的类上,表示对类的说明
tags="说明该类的作用,可以在UI界面上看到的注解"
value="该参数没什么意义,在UI界面上也看到,所以不需要配置"

-【示例代码

@RestController
@RequestMapping("/api/channelBanner")
@Api(tags = "频道Banner业务")
public class ChannelBannerController{
***
}
  • 效果图
    效果图

@ApiOperation:用在请求的方法上,说明方法的用途、作用
value="说明方法的用途、作用"
notes="方法的备注说明"

  • 示例代码
   @RequestMapping(value = "/pageList",method = RequestMethod.POST)
    @ApiOperation(value = "分页查询Banner列表")
    public UniformResultTemplate<PageInfo<ChannelBannerInfoRespDTO>> pageChannelBanner(@RequestBody ChannelBannerPageQueryReqDTO pageQueryDto){
        return super.success(bannerService.pageChannelBanner(pageQueryDto));
    }
  • 效果图
    效果图

@ApiParam: 主要用在get方法签名体内,注解当前参数说明
name: 参数名,
value : 参数业务说明,
required : true与false 是否必填

  • 示例代码
  @RequestMapping(value = "/latestInfo",method = RequestMethod.GET)
    @ApiOperation(value = "查询升级通知列表")
    public UniformResultTemplate<UpgradeNotifyInfoDTO> queryUpgradeNotifyInfo(@ApiParam(name = "appType",value = "手机app类型:1-android,2-ios",required = true)  @RequestParam("appType") Integer appType){
        return super.success(notifyService.queryLatestNotify(appType));
    }
  • 效果图
    image.png

@ApiImplicitParams:用在请求的方法上,表示一组参数说明
@ApiImplicitParam:用在@ApiImplicitParams注解中,指定一个请求参数的各个方面
name:参数名
value:参数的汉字说明、解释
required:参数是否必须传
paramType:参数放在哪个地方

header --> 请求参数的获取:@RequestHeader
query --> 请求参数的获取:@RequestParam
path(用于restful接口)--> 请求参数的获取:@PathVariable
body(不常用)
form(不常用)

dataType:参数类型,默认String,其它值dataType="Integer"
defaultValue:参数的默认值

@ApiResponses:用在请求的方法上,表示一组响应
** @ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息**
code:数字,例如400
message:信息,例如"请求参数没填好"
response:抛出异常的类

@ApiModel:用于响应类上,表示一个返回响应数据的信息
(这种一般用在post创建的时候,使用@RequestBody这样的场景,
请求参数无法使用@ApiImplicitParam注解进行描述的时候)
@ApiModelProperty:用在属性上,描述响应类的属性

  • 【示例代码】:
@Data
@ApiModel(value="ChannelBannerCreateReqDTO",description = "频道新增Model")
public class ChannelBannerCreateReqDTO {

    @ApiModelProperty(value = "Banner名称")
    private String bannerName;

    @ApiModelProperty(value = "Banner图跳转地址",required = true)
    private String targetUrl;

    @ApiModelProperty(value = "Banner地址",required = true)
    private String bannerUrl;

    @ApiModelProperty(value = "频道类型:1-赛事年历,2-发现",required = true)
    private Integer channelType;

    @ApiModelProperty(value = "跳转链接类型,",required = true)
    private Integer targetType;;

    @ApiModelProperty(value = "生效时间,格式:yyyy-MM-dd HH:mm:ss",required = true)
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date effectiveTime;

    @ApiModelProperty(value = "过期时间,格式:yyyy-MM-dd HH:mm:ss",required = true)
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date expirationTime;


}

}

  • 【效果图】:


    效果图

相关文章

网友评论

      本文标题:swagger使用实战

      本文链接:https://www.haomeiwen.com/subject/jovtzctx.html