博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Boot 使用Swagger2 (构建API)
阅读量:6220 次
发布时间:2019-06-21

本文共 5309 字,大约阅读时间需要 17 分钟。

  hot3.png

在App后端开发中经常需要对移动客户端(Android、iOS)提供RESTful API接口,在后期版本快速迭代的过程中,修改接口实现的时候都必须同步修改接口文档,而文档与代码又处于两个不同的媒介,除非有严格的管理机制,不然很容易导致代码与接口文档不一致现象。

本文将介绍RESTful API的重磅好伙伴Swagger2,它可以轻松的整合到spring生态链中,并与Spring MVC程序配合组织出强大RESTful API文档。它既可以减少我们创建文档的工作量,同时又将说明内容整合入实现代码中,让维护文档和修改代码整合为一体,方便让我们在修改代码逻辑的同时方便的修改文档说明。另外Swagger2也提供了强大的页面测试功能来调试每个RESTful API.

通过观看创建项目及引入Mybatis,再执行以下操作

 

在pom.xml中引入依赖包

io.springfox
springfox-swagger2
2.6.1
io.springfox
springfox-swagger-ui
2.6.1

编写Swagger2配置类

package org.morecare.config.swagger2;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import springfox.documentation.builders.ApiInfoBuilder;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;/** * Swagger2配置类 * * @author lvgang * @create 2017-07-19 */@EnableSwagger2@Configurationpublic class Swagger2Config {    @Bean    public Docket createRestApi() {        return new Docket(DocumentationType.SWAGGER_2)                .apiInfo(apiInfo())                .select()                //为当前包路径                .apis(RequestHandlerSelectors.basePackage("org.morecare.test.controller"))                .paths(PathSelectors.any())                .build();    }    //构建 api文档的详细信息函数    private ApiInfo apiInfo() {        return new ApiInfoBuilder()                //页面标题                .title("Spring Boot 测试使用 Swagger2 构建RESTful API")                //创建人                .contact(new Contact("Lvgang", "http://www.aoreki-cn.com", "lvzg_abc@163.com"))                //版本号                .version("1.0")                //描述                .description("API 描述")                .build();    }}

通过@Configuration注解,让Spring来加载该类配置,@EnableSwagger2注解来启用Swagger2。

 

编写测试Controller            

package org.morecare.test.controller;import java.util.List;import org.morecare.config.handler.GlobalDefaultExceptionHandler;import org.morecare.test.bean.Demo;import org.morecare.test.service.DemoManageService;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.DeleteMapping;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.PutMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import io.swagger.annotations.ApiImplicitParam;import io.swagger.annotations.ApiImplicitParams;import io.swagger.annotations.ApiOperation;/** * Demo管理控制层 *  * @author Administrator * */@RestController@RequestMapping("/demo")public class DemoManageController {		private final static Logger logger = LoggerFactory.getLogger(GlobalDefaultExceptionHandler.class);		@Autowired	private DemoManageService demoManageService;	    /**     * 查询列表     * @return     */	    @ApiOperation(value="DEMO查询", notes="根据DEMO名称查询")    @ApiImplicitParams({            @ApiImplicitParam(dataType = "java.lang.String", name = "name", value = "DEMO名称", required = true, paramType = "path")    })    @GetMapping(value = "/find/{name}")    public List
getList(@PathVariable("name") String name){ logger.info("getList"); return demoManageService.getByName(name); } /** * 按ID进行查询 * @param id * @return */ @ApiOperation(value="DEMO查询", notes="根据DEMO主键查询") @GetMapping(value = "/findone/{id}") public Demo get(@PathVariable("id") Integer id){ return demoManageService.getById(id); } /** * 添加 * @param name * @param age * @return */ @ApiOperation(value="创建DEMO", notes="根据传入的信息创建对象") @PostMapping(value = "/") public int add(@RequestParam("name") String name){ Demo tt = new Demo(); tt.setName(name); return demoManageService.add(name); } /** * 更新 * @param id * @param name * @param age * @return */ @ApiOperation(value="DEMO更新", notes="根据主键更新DEMO数据") @PutMapping(value = "/{id}") public int update(@PathVariable("id") Integer id,@RequestParam("name") String name,@RequestParam("age") Integer age){ Demo tt = new Demo(); tt.setName(name); tt.setId(id); return demoManageService.update(id, name); } /** * 删除 * @param id */ @ApiOperation(value="DEMO删除", notes="根据主键删除DEMO数据") @DeleteMapping(value = "/{id}") public void del(@PathVariable("id") Integer id){ demoManageService.remove(id); } }

    Swagger 注解介绍:

  • 通过@ApiOperation注解来给API增加说明
  • 通过@ApiImplicitParams、@ApiImplicitParam注解来给参数增加说明
  • 通过@ApiIgnore来忽略那些不想让生成RESTful API文档的接口

启动查看

完成以上工作,通过Main启动项目后访问  打开以下页面表示配置成功!

111834_SqxO_2273688.png

 

111848_n4lb_2273688.png

 

通过输入参数,并眯击Try it out!就可以进行测试了

转载于:https://my.oschina.net/sdlvzg/blog/1475237

你可能感兴趣的文章
雅虎持有阿里530亿美元股份 但投资者估值却没那么高
查看>>
安防巨头大华半年股价翻倍的背后,AI起到了哪些作用
查看>>
漏洞报告平台的“漏洞” 70%网络安全事件都是人的问题
查看>>
Windows 10创意者更新发布了:有这十项新功能
查看>>
工信部:2019年中国云计算产业目标4300亿
查看>>
光伏巨头赛维重整终遭强裁,债转股方案疑虑尚存
查看>>
智能家居革命 兼容HomeKit的设备登陆美国
查看>>
MIT推进诊断老年痴呆的认知计算,解决机器学习的黑箱问题
查看>>
《领域特定语言》一3.3 文法、语法和语义
查看>>
2017视频会议的三大重要应用方向
查看>>
到2020年智慧城市建设水平全国领先
查看>>
Red Hat财报:OpenStack比重越来越大
查看>>
呼和浩特市政务云计算中心
查看>>
外媒解读乌克兰电网遭遇黑客事故
查看>>
从Tlink看企业接入物联网的紧迫性
查看>>
提升服务器性能+降低连接成本 25GbE是新选择
查看>>
趋利避害:将影子IT转变为下一代IT
查看>>
当前超融合市场概览
查看>>
电信联通联合发布大数据服务 强调安全将纳入征信系统
查看>>
智能家居市场风起云涌
查看>>