当前位置: 澳门新濠3559 > 编程 > 正文

进行配置),修改代码但是没有更新文档

时间:2019-10-06 23:51来源:编程
UserController 1. Swagger是什么? 合法说法:Swagger是一个专门的学业和总体的框架,用于转移、描述、调用和可视化RESTful 风格的 Web服务。总体目的是使顾客端和文件系统作为服务器以同样

UserController

1. Swagger是什么?

合法说法:Swagger是一个专门的学业和总体的框架,用于转移、描述、调用和可视化 RESTful 风格的 Web 服务。总体目的是使顾客端和文件系统作为服务器以同样的速度来更新。文件的措施,参数和模型紧聚焦成到劳动器端的代码,允许API来一向维持同步。

村办以为,swagger的二个最大的长处是能实时同步api与文书档案。在项目支出进度中,产生过数十次:修改代码但是尚未更新文档,前端如故根据老旧的文书档案举办付出,在联调进度中才察觉题指标意况(当然依赖开闭原则,对接口的改变是不允许的,不过在品种不安宁阶段,这种情状很难幸免)。

2. spring boot 集成 Swagger

日前爱抚的系统是依靠springboot框架开垦的,因而本文种详细描述springboot与swagger集成的长河。

spring-boot系统集成swagger需求张开如下操作:

  1. 增添maven注重,须求在系统的pom中增加如下依赖:

     <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.2.2</version>
     </dependency>
    
  2. 累加swagger配置文件,配置文件如下:

    @Configuration
    @EnableSwagger2
    public class SwaggerConfig {
    
        @Bean
        public Docket api() {
            return new Docket(DocumentationType.SWAGGER_2)
                    .select()  // 选择那些路径和api会生成document
                    .apis(RequestHandlerSelectors.any()) // 对所有api进行监控
                    .paths(PathSelectors.any()) // 对所有路径进行监控
                    .build();
        }
    
    }
    

    经过申明EnableSwagger2注解Swagger的可用性,此处会定义一个项目为Docket的bean,
    至于docket类的表明如下:

    A builder which is intended to be the primary interface into the swagger-springmvc framework.Provides sensible defaults and convenience methods for configuration.

    Docket的select()方法会提必要swagger-springmvc framework的八个默许构造器(ApiSelectorBuilder),那个构造器为布局swagger提供了一多元的默许属性和福利方法。

  3. 测试

    通过拜会: ,能测量试验生成的api是不是可用。此时回去的是一个json格局的页面,可读性不佳。能够透过Swagger UI来生成二个可读性优良的api页面。具体做法正是,在pom中增加相关正视。如下:

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

    重新做客: 就能够看出可读性较好的api文书档案页面。

  4. 注意:

    1. your-app-root指的你的wabapp的根路线,小编当下的webapp就默许在根路线下,所以地点是:
    2. spring-mvc上引用swagger供给做别的有关的布局,具体请查看参谋文献
    3. swagger对restful风格的api支持的相比好,非restful风格的api扶助的不是很好,对于非restful风格的api只怕别的语言(非java语言)能够运用 澳门新濠3559,http://editor.swagger 编辑器来下班实现成关的API编写 

参谋文献

  1. swagger-2-documentation-for-spring-rest-api

Warning:要小心spring mvc的配备,v2/api-docs是接口映射名称,假使MVC前边会暗许加.do的话,读取的时候也要加上.do

0.pom依赖

在布局中做处理
@Configuration   
@EnableSwagger2   
@EnableWebMvc  
@ComponentScan("com.XXX.controller")  
public class SwaggerConfig{  

    @Autowired  
    ConfigService configService;  

    @Bean  
    public Docket customDocket() {  
        if(configService.getServerEnv() == ServerEnvEnum.ONLINE) {  
            return new Docket(DocumentationType.SWAGGER_2)  
            .apiInfo(apiInfoOnline())  
        .select()  
                .paths(PathSelectors.none())//如果是线上环境,添加路径过滤,设置为全部都不符合  
        .build();  
        }else {  
            return new Docket(DocumentationType.SWAGGER_2)  
            .apiInfo(apiInfo());  
        }  
    }  

    private ApiInfo apiInfo() {  
        return new ApiInfoBuilder()  
                .title("XXX系统")  
                .description("XXX系统接口")  
                .license("")  
                .licenseUrl("")  
                .termsOfServiceUrl("")  
                .version("1.0.0")  
                .contact(new Contact("","", ""))  
                .build();  
    }  
    private ApiInfo apiInfoOnline() {  
        return new ApiInfoBuilder()  
                .title("")  
                .description("")  
                .license("")  
                .licenseUrl("")  
                .termsOfServiceUrl("")  
                .version("")  
                .contact(new Contact("","", ""))  
                .build();  
    }  
} 

1. Swagger是什么?

Swagger 是一款RESTFUL接口的文书档案在线自动生成 成效测量检验功效软件。

合法说法:Swagger是三个标准和总体的框架,用于转移、描述、调用和可视化 RESTful 风格的 Web 服务。总体目的是使客户端和文件系统作为服务器以同一的速度来更新。文件的主意,参数和模型紧密集成到劳动器端的代码,允许API来一直维持同步。

村办感到,swagger的三个最大的长处是能实时同步api与文档。在类型支付进度中,爆发过频仍:修改代码不过从未更新文书档案,前端照旧依照老旧的文书档案实行支付,在联调进程中才意识题指标景观(当然依靠开闭原则,对接口的退换是不允许的,不过在项目不安宁阶段,这种处境很难制止)。

1. Swagger是什么?

法定说法:Swagger是四个正规和一体化的框架,用于转移、描述、调用和可视化 RESTful 风格的 Web 服务。总体指标是使顾客端和文件系统作为服务器以同一的快慢来更新。文件的措施,参数和模型紧聚焦成到劳动器端的代码,允许API来始终维持同步。

村办感觉,swagger的贰个最大的长处是能实时同步api与文书档案。在项目支出进度中,产生过数十次:修改代码可是尚未更新文书档案,前端依旧遵照老旧的文书档案举行付出,在联调进度中才察觉标题标情景(当然依靠开闭原则,对接口的退换是不允许的,不过在品种不安宁阶段,这种情状很难防止)。

@EnableSwagger2@Configurationpublic class SwaggerConfig { //是否开启swagger,正式环境一般是需要关闭的,可根据springboot的多环境配置进行设置 @Value(value = "${swagger.enabled}") Boolean swaggerEnabled; @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2).apiInfo) // 是否开启 .enable(swaggerEnabled).select() // 扫描的路径包 .apis(RequestHandlerSelectors.basePackage("cn.lqdev.learning.springboot.chapter10")) // 指定路径处理PathSelectors.any()代表所有的路径 .paths(PathSelectors.any.build().pathMapping; } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("SpringBoot-Swagger2集成和使用-demo示例") .description("oKong | 趔趄的猿") // 作者信息 .contact(new Contact("oKong", "https://blog.lqdev.cn/", "499452441@qq.com")) .version .build(); }}
3.4 在浏览器中输入http://ip:port/your-app-root/swagger-ui.html 就能够生成对应的文书档案并得以每一日测量检验。

澳门新濠3559 1

图片.png

澳门新濠3559 2

图片.png

图中的文字说明都以因而事先的注释增加进去的

2. spring boot 集成 Swagger

当前维护的连串是基于springboot框架开采的,由此本文少禽详细描述springboot与swagger集成的进度。

spring-boot系统集成swagger必要举办如下操作:

  1. 增多maven正视,必要在系统的pom中增添如下正视:

     <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.2.2</version>
     </dependency>
    
  2. 加多swagger配置文件,配置文件如下:

    @Configuration
    @EnableSwagger2
    public class SwaggerConfig {
    
        @Bean
        public Docket api() {
            return new Docket(DocumentationType.SWAGGER_2)
                    .select()  // 选择那些路径和api会生成document
                    .apis(RequestHandlerSelectors.any()) // 对所有api进行监控
                    .paths(PathSelectors.any()) // 对所有路径进行监控
                    .build();
        }
    
    }
    

    因此注脚EnableSwagger2注脚Swagger的可用性,此处会定义三个门类为Docket的bean,
    至于docket类的认证如下:

    A builder which is intended to be the primary interface into the swagger-springmvc framework.Provides sensible defaults and convenience methods for configuration.

    Docket的select()方法会提须要swagger-springmvc framework的贰个暗许构造器(ApiSelectorBuilder),那一个构造器为布局swagger提供了一多级的默许属性和便利方法。

  3. 测试

    因而拜候: ,能测量检验生成的api是或不是可用。此时回去的是三个json情势的页面,可读性倒霉。能够通过Swagger UI来生成四个可读性非凡的api页面。具体做法正是,在pom中加多相关信赖。如下:

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

    重新做客: 就能够看出可读性较好的api文书档案页面。

  4. 注意:

    1.  中your-app-root指的你的wabapp的根路线,笔者当下的webapp就私下认可在根路线下,所以地点是:
    2. spring-mvc上引用swagger必要做别的有关的布局,具体请查看参谋文献
    3. swagger对restful风格的api帮衬的比较好,非restful风格的api援助的不是很好,对于非restful风格的api可能其余语言(非java语言)能够利用 http://editor.swagger 编辑器来下班完结有关的API编写

参照他事他说加以考察文献

  1. swagger-2-documentation-for-spring-rest-api
  • 个人QQ:499452441
  • 微信大伙儿号:lqdevOps

2. spring boot 集成 Swagger

现阶段维护的种类是基于springboot框架开辟的,由此本文仲详细描述springboot与swagger集成的进度。

民用博客:

Swagger使用计算

@Data@Builder@NoArgsConstructor@AllArgsConstructor//加入@ApiModel@ApiModelpublic class UserReq { @ApiModelProperty(value="ID",dataType="String",name="ID",example="1020332806740959233") String id; @ApiModelProperty(value="编码",dataType="String",name="code",example="001") @NotBlank(message = "编码不能为空") String code; @ApiModelProperty(value="名称",dataType="String",name="name",example="oKong") @NotBlank(message = "名称不能为空") String name;}

上述是到位生成api文书档案的具体步骤,但是有诸有此类多少个难题值得大家想想。

接口文书档案生成,必要摆设咱们的门类中,对大家的代码有侵袭,这点现行反革命幸免不了,并且大家只愿意客商在我们的测验意况去测验,不期望生成景况去变通文书档案,如何化解那些难点,方法有二种,如下:

api首页路线:

bean 这里要求小心,假若有boolean类型,要为其加多getXX

X和setXXX方法,不是isXXX,因为swagger不识别isXXX

package org.kewei.zhang.entites;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

/**
 * @author: kewei.zhang
 * @Date: 2017/12/5
 * @Time: 下午3:15
 * Description:
 */
@ApiModel(value = "用户信息")
public class UserVo {

    @ApiModelProperty(value = "用户id", required = true)
    private long userId=10;
    @ApiModelProperty(value = "昵称", required = true)
    private String userName="张克巍";

    public long getUserId() {
        return userId;
    }

    public void setUserId(long userId) {
        this.userId = userId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }
}

前一章节牵线了mybatisPlus的合一和总结利用,本章节初阶接着上一章节的客户表,进行Swagger2的融会。未来都执行前后端分离支出和微服务大行其道,分微服务及左右端分离后,前后端支出的联系开支就大增了。所以一款壮大的RESTful API文书档案就重大了。而眼前在后端领域,基本上是Swagger的海内外了。

Swagger是一款RESTful接口的文书档案在线自动生成、功用测量检验作用框架。贰个标准和全部的框架,用于转移、描述、调用和可视化RESTful风格的Web服务,加上swagger-ui,能够有很好的变现。

3.2 创设连锁实业,controller,响应对象,首要看中间的注释的使用。

1 ,@Api(description = "客商相关接口文档")每种controller上的注释,表示这么些controller首要的作业模块
2,@ApiOperation(value = "顾客首页", notes = "访谈页面")每种方法的批注,表示这些办法的政工作作用能是怎么样
3, @ApiParam(name = "userName",value = "顾客外号",required = true)方法参数注脚,表示这几个在那个工作方法中的名称,生成后的文档对该字段的验证,同样支撑对象类型(援用类型),通过@ApiModelProperty(value = "顾客id", required = true)来证实援用类型各种属性的效率。
4,@RequestHeader("token") String token 这些注明能够获得和安装header的参数,如客户地方具名。

澳门新濠3559 3公众号

3,Swagger使用手续:

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

响应实体

package org.kewei.zhang.entites;

import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.io.Serializable;

/**
 * @author: kewei.zhang
 * @Date: 2017/12/5
 * @Time: 下午3:11
 * Description:
 */
@ApiModel
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Result<T> implements Serializable {

    private static final long serialVersionUID = 1L;

    // 200成功
    @ApiModelProperty(value = "错误码", name = "错误码")
    private int code;

    // 返回消息,成功为“success”,失败为具体失败信息
    @ApiModelProperty(value = "错误码描述", name = "错误码描述")
    private String desc;

    // 返回数据
    @ApiModelProperty(value = "数据对象", name = "数据对象")
    private T data;

    public Result() {
    }

    public Result(int code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    public Result(int code, String desc, T data) {
        this.code = code;
        this.desc = desc;
        this.data = data;
    }

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }

    @Override
    public String toString() {
        return "Result{"  
                "code="   code  
                ", desc='"   desc   '''  
                ", data="   data  
                '}';
    }
}

package org.kewei.zhang.entites;

/**
 * @author: kewei.zhang
 * @Date: 2017/12/5
 * @Time: 下午3:13
 * Description:
 */
public interface Constants {

    ////////////// 系统标识符 开始//////////////////
    /**
     * 错误 描述
     */
    String MSG_ERROR = "error";
    /**
     * 成功 描述
     */
    String MSG_SUCCESS = "OK";


    ////////////// 系统状态码 开始//////////////////
    /**
     * 请求失败
     */
    int ERROR = 100;
    /**
     * 请求成功
     */
    int SUCCESS = 200;
}

1.编辑配置文件(Swagger2Config.java)

3.1 导入相关的maven信任
<!--                         swagger开始                   -->
      <dependency>
          <groupId>io.springfox</groupId>
          <artifactId>springfox-swagger2</artifactId>
          <version>2.5.0</version>
      </dependency>
      <dependency>
          <groupId>io.springfox</groupId>
          <artifactId>springfox-swagger-ui</artifactId>
          <version>2.5.0</version>
      </dependency>
      <dependency>
          <groupId>io.springfox</groupId>
          <artifactId>springfox-staticdocs</artifactId>
          <version>2.5.0</version>
      </dependency>
      <!--                         swagger结束                   -->

UserReq.java

迄今结束达成有着swagger的布置,有不晓得的地方应接相互学习qq:1826359254

/** * 用户控制层 简单演示增删改查及分页 * 新增了swagger文档内容 2018-07-21 * @author oKong * */@RestController@RequestMapping@Api(tags="用户API")public class UserController { @Autowired IUserService userService; @PostMapping @ApiOperation(value="用户新增") //正常业务时, 需要在user类里面进行事务控制,控制层一般不进行业务控制的。 //@Transactional(rollbackFor = Exception.class) public Map<String,String> addUser(@Valid @RequestBody UserReq userReq){ User user = new User(); user.setCode(userReq.getCode; user.setName(userReq.getName; //由于设置了主键策略 id可不用赋值 会自动生成 //user.setId; userService.insert; Map<String,String> result = new HashMap<String,String>(); result.put("respCode", "01"); result.put("respMsg", "新增成功"); //事务测试 //System.out.println; return result; } @PostMapping @ApiOperation(value="用户修改") public Map<String,String> updateUser(@Valid @RequestBody UserReq userReq){ if(userReq.getId() == null || "".equals(userReq.getId { throw new CommonException("0000", "更新时ID不能为空"); } User user = new User(); user.setCode(userReq.getCode; user.setName(userReq.getName; user.setId(Long.parseLong(userReq.getId; userService.updateById; Map<String,String> result = new HashMap<String,String>(); result.put("respCode", "01"); result.put("respMsg", "更新成功"); return result; } @GetMapping("/get/{id}") @ApiOperation(value="用户查询 @ApiImplicitParam(name="id",value="查询ID",required=true) public Map<String,Object> getUser(@PathVariable String id){ //查询 User user = userService.selectById; if(user == null) { throw new CommonException("0001", "用户ID:"   id   ",未找到"); } UserResp resp = UserResp.builder() .id(user.getId().toString .code(user.getCode .name(user.getName .status(user.getStatus .build(); Map<String,Object> result = new HashMap<String,Object>(); result.put("respCode", "01"); result.put("respMsg", "成功"); result.put("data", resp); return result; } @GetMapping @ApiOperation(value="用户查询 public Map<String,Object> pageUser(int current, int size){ //分页 Page<User> page = new Page<>(current, size); Map<String,Object> result = new HashMap<String,Object>(); result.put("respCode", "01"); result.put("respMsg", "成功"); result.put("data", userService.selectPage; return result; } }

controller

package org.kewei.zhang.controllers;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.kewei.zhang.Beans.TbTest;
import org.kewei.zhang.entites.Constants;
import org.kewei.zhang.entites.Result;
import org.kewei.zhang.entites.UserVo;
import org.kewei.zhang.mapper.TbTestMapper;
import org.kewei.zhang.utils.DateUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.text.ParseException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * @author : kewei.zhang
 * @Date: 2017/10/19
 * @Time: 下午3:00
 * Description: 用于处理所有action的统一入口
 */
@SuppressWarnings("ALL")
@RestController
@RequestMapping("/case")
@Api(description = "用户相关接口文档")
public class SnCaseController extends BaseController {

    @Autowired
    private TbTestMapper tbTestMapper;

    @GetMapping("/index")
    @ApiOperation(value = "用户首页", notes = "访问页面")
    public String index() {
        TbTest tbTest = new TbTest();
        tbTest.setAge(1);
        tbTest.setBrithday(new Date());
        tbTest.setHigh(172);
        tbTest.setIsboy((short) 1);
        tbTest.setName("张克巍");
        tbTest.setSchool("皖西学院");
        tbTest.setWigth(158);
        tbTestMapper.insert(tbTest);
        return "index";
    }


    @RequestMapping(value = "/add", method = RequestMethod.POST)
    @ApiOperation(value = "添加用户", notes = "增加用户")
    public Result<UserVo> add(@ApiParam(name = "token", value = "token",required = true) @RequestParam(name = "token", required = true) String token,
                              @ApiParam(name = "userName",value = "用户昵称",required = true)@RequestParam(name = "userName",required = true)String userName,
                              @ApiParam(name = "mobile",value = "手机",required = true)@RequestParam(name = "mobile",required = true)String mobile,
                              @ApiParam(required = true, name = "email", value = "邮箱") @RequestParam(name = "email", required = true) String email ) {

        return new Result<UserVo>(Constants.SUCCESS,Constants.MSG_SUCCESS,new UserVo());
    }

    @RequestMapping(value = {"/toAdd","/testAdd"}, method = RequestMethod.GET)
    @ApiOperation(value = "用户添加", notes = "用户增加")
    public Result<UserVo> toAdd(@ApiParam(name = "token", value = "token",required = true) @RequestParam(name = "token", required = true) String token,
                              @ApiParam(name = "userName",value = "用户昵称",required = true)@RequestParam(name = "userName",required = true)String userName,
                              @ApiParam(name = "mobile",value = "手机",required = true)@RequestParam(name = "mobile",required = true)String mobile,
                              @ApiParam(required = true, name = "email", value = "邮箱") @RequestParam(name = "email", required = true) String email ) {

        return new Result<UserVo>(Constants.SUCCESS,Constants.MSG_SUCCESS,new UserVo());
    }

    @RequestMapping(value = "/update", method = RequestMethod.POST)
    @ApiOperation(value = "更新用户", notes = "用户更新")
    public Result<UserVo> update(@ApiParam(name = "user", value = "user",required = true)@RequestBody UserVo userVo ) {

        return new Result<UserVo>(Constants.SUCCESS,Constants.MSG_SUCCESS,userVo);
    }

    @RequestMapping(value = "/getHeader", method = RequestMethod.POST)
    @ApiOperation(value = "获取用户头部信息", notes = "获取用户头部信息")
    public Result<UserVo> getHeader(@ApiParam(name = "token", value = "用户身份",required = true)@RequestHeader("token") String token,
                                    @ApiParam(name = "userName",value = "用户昵称",required = true)@RequestParam(name = "userName",required = true)String userName,
                                    @ApiParam(name = "mobile",value = "手机",required = true)@RequestParam(name = "mobile",required = true)String mobile) {

        UserVo userVo= new UserVo();
        userVo.setUserName(token userName mobile);

        return new Result<UserVo>(Constants.SUCCESS,Constants.MSG_SUCCESS,userVo);
    }
}

执行:

3.3 swagger增多配置新闻@Configuration@EnableSwagger2
package org.kewei.zhang.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
* @author: kewei.zhang
* @Date: 2017/12/5
* @Time: 下午3:04
* Description:
*/
@Configuration
@EnableSwagger2
@Component
public class SwaggerConfig {

   @Bean
   public Docket userApi() {
       return new Docket(DocumentationType.SWAGGER_2)
               .groupName("用户")
               .select()
               .apis(RequestHandlerSelectors.basePackage("org.kewei.zhang.controller"))// 选择那些路径和api会生成document,每个controller都需要添加
               .paths(PathSelectors.any()) // 对所有路径进行监控
               .build()
               .apiInfo(userInfo());
   }

   private ApiInfo userInfo() {
       ApiInfo apiInfo = new ApiInfo("用户相关接口",//大标题
               "用户有关的接口,包括增加删除用户",//小标题
               "0.1",//版本
               "上海",
               new Contact("zkw", "", ""),// 作者
               "swagger url",//链接显示文字
               ""//网站链接
       );
       return apiInfo;
   }

}

结果:

另一种格局是:

修改一下借助,为了编译通过,单独把swagger-annotations拿出去,线上景况把springfox-swagger-ui的重视配置成是provided,那样能够兑现http://localhost/swagger-ui.html访问404。但是:http://localhost/v2/api-docs和http://localhost/swagger-resources等接口还是能够访谈,尽管是空的!

            <dependency>  
                <groupId>io.swagger</groupId>  
                <artifactId>swagger-annotations</artifactId>  
                <version>${springfox-swagger-anno.version}</version>  
            </dependency>  
            <dependency>  
                <groupId>io.springfox</groupId>  
                <artifactId>springfox-swagger2</artifactId>  
                <version>${springfox-swagger.version}</version>  
            </dependency>  
            <dependency>  
                <groupId>io.springfox</groupId>  
                <artifactId>springfox-swagger-ui</artifactId>  
                <scope>${swagger.scope}</scope>  
                <version>${springfox-swagger.version}</version>  
            </dependency>  

          <profile>  
                <id>online</id>  
                <properties>  
                    <profiles.active>online</profiles.active>  
                    <swagger.scope>provided</swagger.scope>  
                </properties>  
            </profile>  

全部示例:chapter-10

3.添Gavin档内容(日常上是在Controller,诉求参数上进展评释,这里以上章节的UserController拓宽示公布置)

澳门新濠3559 4Try it out!

本章节重若是对Swagger的融会和精炼利用举行了表明,详细的用法,可自行检索相关资料下,这里就不解说了。因为对此八成之上的文档须要基本能满意了。一些诸如前端依据swaggerapi-docs开展前端的神速支付,那就须求真实情状实际上约定了,比方飞快的生成表单页等也是很便利的业务。末了,刚强建议在传宗接代条件关闭swagger,防止不须求的纰漏暴光!

近来互联英特网无数大佬皆有SpringBoot排山倒海教程,如有雷同,请多多原谅了。本文是我在Computer前一字一板敲的,每一步都以实行的。若文中全体错误之处,还望提议,感谢。

澳门新濠3559 5Execute

那边接纳的swagger版本为:2.8.0

世家可下载示例,查看自定义的字符出现的地方,那样能够对其有个大致理解,各字段的成效领域是哪儿。

常用的批注@Api@ApiOperation@ApiModel@ApiModelProperty演示中有实行标记,对于别的申明,大家可机关Google,毕竟常用的就这一个了。有了swagger之后,原来有些post呼吁须要postman如此这般的调治工具来开展发起,而前几日径直在页面上就足以拓宽调试了,是还是不是很爽!对于服务的调用者而已,有了那份api文书档案也是了然入怀,无需和后端多少关系费用,按着api表达实行前端开采就可以。

调试:点击需求拜候的api列表,点击try it out!开关,就可以弹出一下页面:

澳门新濠3559 6swagger首页

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

重在是加上注明@EnableSwagger2和定义Docket的bean类。

澳门新濠3559 7结果

编辑:编程 本文来源:进行配置),修改代码但是没有更新文档

关键词: 澳门新濠3559