zoukankan      html  css  js  c++  java
  • springboot集成swagger2

    springboot集成swagger2

    swagger2有哪些注解

    作用范围API使用位置
    对象属性 @ApiModelProperty 用在出入参数对象的字段上
    协议集描述 @Api 用于controller类上
    协议描述 @ApiOperation 用在controller的方法上
    Response集 @ApiResponses 用在controller的方法上
    Response @ApiResponse 用在 @ApiResponses里边
    非对象参数集 @ApiImplicitParams 用在controller的方法上
    非对象参数描述 @ApiImplicitParam 用在@ApiImplicitParams的方法里边
    描述返回对象的意义 @ApiModel 用在返回对象类上

    注解的使用

     @ApiModelProperty-----------------------------name:属性名       value:属性描述

    1 @ApiModelProperty(name = "userNo",value = "用户编号")
    2  private int userNo; //用户编号
    View Code

    @ApiModel---------------------------------------description :model对象描述

    1 @ApiModel(description = "用户信息")
    2 public class User {}
    View Code

      

    @ApiOperation

     1  @RequestMapping(value = "addUserForPost",method = RequestMethod.POST,headers = "Content-Type=application/x-www-form-urlencoded")
     2     @ApiOperation(value = "表单形式添加用户")
     3  public Map addUser(HttpServletRequest request,String userName, Integer userAge){
     4 
     5         Enumeration<String> names = request.getHeaderNames();
     6         while (names.hasMoreElements()){
     7             String name = names.nextElement();
     8 
     9             System.out.println(name+"==="+request.getHeader(name));
    10         }
    11         System.out.println("userName="+userName+",userAge="+userAge);
    12         RESPONSE.put("code",200);
    13         RESPONSE.put("msg","添加成功");
    14 
    15         return RESPONSE;
    16     }
    View Code

    @Api

    1 @RestController
    2 @Api(tags = "UserController | 测试swagger注解的控制器")
    3 @RequestMapping(value = "/user")
    4 public class UserController {}
    View Code

    @ApiImplicitParams 和@ApiImplicitParam组合使用

     1   @RequestMapping(value = "/getUser",method = RequestMethod.GET)
     2     @ApiOperation(value = "获取用户信息")
     3     @ApiImplicitParams({
     4             @ApiImplicitParam(name = "id",value = "用户编号",paramType = "query"),
     5             @ApiImplicitParam(name = "name",value = "用户名称",paramType = "query")
     6     })
     7     public User getUser(@RequestParam(required = false) int id,@RequestParam(required = false) String name){
     8         User user = new User();
     9         user.setUserNo(id);
    10         user.setAge(12);
    11         user.setUserName("lisi");
    12         return user;
    13     }
    View Code

    @ApiImplicitParam属性值说明

    name:属性值

    value:属性描述

    paramtype:参数类型

    paramtype:  

        a、path---------请求参数放在请求路径上 /a/{id},get请求

     1  @RequestMapping(value = "/modifyUser/{userNo}",method = RequestMethod.GET)
     2     @ApiOperation("修改用户信息")
     3     @ApiImplicitParams({
     4             @ApiImplicitParam(name = "userNo",value = "用户编号",paramType = "path")
     5     })
     6     public Map updUser(@PathVariable(required = true) int userNo){
     7         Map map = new HashMap();
     8         map.put("code",200);
     9         map.put("msg","修改成功");
    10         return map;
    11     }
    View Code

        b、query------请求参数拼接在请求url上   url?a=1&b=2,get请求

     1  @RequestMapping(value = "/getUser",method = RequestMethod.GET)
     2     @ApiOperation(value = "获取用户信息")
     3     @ApiImplicitParams({
     4             @ApiImplicitParam(name = "id",value = "用户编号",paramType = "query"),
     5             @ApiImplicitParam(name = "name",value = "用户名称",paramType = "query")
     6     })
     7     public User getUser(@RequestParam(required = false) int id,@RequestParam(required = false) String name){
     8         User user = new User();
     9         user.setUserNo(id);
    10         user.setAge(12);
    11         user.setUserName("lisi");
    12         return user;
    13     }
    View Code

        c、form -----请求参数以表单形式提交,必须是post请求,请求头必须指定headers="Content-Type=application/x-www-form-urlencoded"

     1     @RequestMapping(value = "addUserForPost",method = RequestMethod.POST,headers = "Content-Type=application/x-www-form-urlencoded")
     2     @ApiOperation(value = "表单形式添加用户")
     3     @ApiImplicitParams({
     4             @ApiImplicitParam(name = "userName",value = "用户名称",paramType = "form",required = true),
     5             @ApiImplicitParam(name = "userAge",value = "用户年龄",paramType = "form",required = true)
     6     })
     7     public Map addUser(HttpServletRequest request,String userName, Integer userAge){
     8 
     9         Enumeration<String> names = request.getHeaderNames();
    10         while (names.hasMoreElements()){
    11             String name = names.nextElement();
    12 
    13             System.out.println(name+"==="+request.getHeader(name));
    14         }
    15         System.out.println("userName="+userName+",userAge="+userAge);
    16         RESPONSE.put("code",200);
    17         RESPONSE.put("msg","添加成功");
    18 
    19         return RESPONSE;
    20     }
    View Code

        d、body -----------请求参数在流里,即请求参数以json格式传递,post请求

     1     @RequestMapping(value = "addUser",method = RequestMethod.POST)
     2     @ApiOperation(value = "添加用户信息")
     3     @ApiImplicitParams({
     4             @ApiImplicitParam(name = "user",value = "用户信息",dataType = "User",paramType = "body"),
     5     })
     6     public Map addUser(@RequestBody User user){
     7         System.out.println(user.toString());
     8         Map map = new HashMap();
     9         map.put("code",200);
    10         map.put("msg","添加成功");
    11         return map;
    12     }
    View Code

    文件上传----------请求头必须指定header="Content-Type=multipart/form-data",post请求

     1    @RequestMapping(value = "/upload",headers = "Content-type=multipart/form-data",method = RequestMethod.POST)
     2     @ApiOperation(value = "文件上传")
     3     @ApiImplicitParams({
     4             @ApiImplicitParam(name="userName",value = "用户名称",paramType = "query"),
     5             @ApiImplicitParam(name = "age",value = "用户年龄",paramType = "query")
     6     })
     7     public void upload(@ApiParam(name = "file",value = "上传文件") MultipartFile file,String userName,Integer age){
     8 
     9         System.out.println(file.getOriginalFilename());
    10         System.out.println(userName);
    11         System.out.println(age);
    12     }
    View Code

    springboot如何与swagger2集成

      

    <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.9.2</version>
    </dependency>
    
    
    <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.9.2</version>
    </dependency>

      1、在启动类上加上@EnableSwagger2注解

      2、自定义一个swagger2配置类

     1 @Configuration
     2 public class Sawgger2 {
     3 
     4     @Bean
     5     public Docket createRestApi(){
     6 
     7         return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).
     8                 select().apis(RequestHandlerSelectors.basePackage("com.swagger.springbootswagger.controller"))
     9                 .paths(PathSelectors.any()).build();
    10     }
    11 
    12     @Bean
    13     public ApiInfo apiInfo(){
    14         return new ApiInfoBuilder().title("Spring boot中使用Swagger2构建RESTful APIs").version("1.0").build();
    15     }
    16 }
    View Code

          3、配置是否开启swagger

      配置文件自定义一个属性

        spring.swagger2.enabled=true

      在swagger配置类上加上 @ConditionalOnProperty(name = "spring.swagger2.enabled",havingValue = "true")注解

      4、对swagger页面进行增强

        1)maven引入如下jar包

    <!-- swagger2 增强UI ,拥有好看的界面, 和接口分组,排序等功能,如不引用可自行删除-->
            <dependency>
                <groupId>com.github.xiaoymin</groupId>
                <artifactId>swagger-bootstrap-ui</artifactId>
                <version>1.8.7</version>
            </dependency>

        2)swagger配置类上加上 @EnableSwaggerBootstrapUI 注解

      

                     3)访问页面由swagger-ui.html变成doc.html

           http://localhost:8081/doc.html

  • 相关阅读:
    phpcms 任意位置获取用户头像
    php微信公众帐号发送红包
    nginx解决502错误
    phpcms v9 万能字段使用
    0转换为万
    温故而知新(三)
    温故而知新(一)
    基础积累,来自其他网站的链接
    GCD多线程 在子线程中获取网络图片 在主线程更新
    iOS9 中的一些适配问题
  • 原文地址:https://www.cnblogs.com/sxqjava/p/9656597.html
Copyright © 2011-2022 走看看