Web开发常采用先后端分离的方式。先后端经过API进行交互,在Swagger UI中,先后端人员可以直观预览而且测试API,方便先后端人员同步开发。html
在SpringBoot中集成swagger,步骤以下:java
1.将下面的依赖添加到Maven项目的pom.xml文件中。springfox-swagger2组件帮助咱们自动生成描述API的json文件,而springfox-swagger-ui组件就是将这个json文件解析出来,用一种更友好的方式呈现出来。web
<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>
2.添加Swaager的配置类spring
package com.example.demo.config; import io.swagger.annotations.ApiOperation; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; @EnableSwagger2 @Configuration public class SwaggerConfig { @Bean public Docket swaggerSpringMvcPlugin() { return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)).build(); } }
3.在须要暴露的API上添加须要在Swagger UI页面上显示的应用相关的介绍信息。举个例子吧~数据库
在Controller类上添加@API注解,说明该类的做用;该类下包含增删改查五个方法,给你们一个全面的示范,至于service、dao层的实现,留给你们本身发挥吧~主要是在方法上添加@ApiOperation,@ApiImplicitParam注解,做用是对方法以及参数的说明。json
package com.example.demo.controller; import com.example.demo.service.AreaService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import com.example.demo.entity.Area; import java.util.*; @Api(description = "AreaController相关的api") @RestController @RequestMapping("/superadmin") public class AreaController { @Autowired private AreaService areaService; @ApiOperation(value="查询区域信息" ,notes = "查询数据库中全部区域信息") @RequestMapping(value="/listarea" , method = RequestMethod.GET) private Map<String,Object> listArea(){ Map<String,Object> modelMap = new HashMap<String, Object>() ; List<Area> list = areaService.getAreaList(); modelMap.put("areaList" , list); return modelMap; } @ApiOperation(value="根据id查询区域信息" ,notes = "查询数据库中某个区域信息") @ApiImplicitParam(name="areaId",value="区域ID",paramType="query",required = true,dataType = "int") @RequestMapping(value="/getareabyid" ,method = RequestMethod.GET) private Map<String,Object> getAreaById(@RequestParam("areaId") Integer areaId){ Map<String,Object> modelMap = new HashMap<String, Object>() ; Area area = areaService.getAreaById(areaId); modelMap.put("areaList" , area); return modelMap; } @ApiOperation(value="添加区域信息",notes="根据Area对象添加区域信息") @ApiImplicitParam(name="area",value="区域信息",required=true,dataType="Area") @RequestMapping(value="/addarea" ,method = RequestMethod.POST) private Map<String,Object> addArea(@RequestBody Area area){ Map<String,Object> modelMap = new HashMap<String, Object>() ; modelMap.put("success" ,areaService.addArea(area)); return modelMap; } @ApiOperation(value="修改区域信息",notes="根据Area对象修改区域信息") @ApiImplicitParam(name="area",value="区域信息",required=true,dataType="Area") @RequestMapping(value="/modifyarea" ,method = RequestMethod.POST) private Map<String,Object> modifyArea(@RequestBody Area area){ Map<String,Object> modelMap = new HashMap<String, Object>() ; modelMap.put("success" ,areaService.modifyArea(area)); return modelMap; } @ApiOperation(value="删除区域信息",notes="根据区域ID删除区域信息") @ApiImplicitParam(name="areaId",value="区域ID",required=true,dataType="int") @RequestMapping(value="/removearea" ,method = RequestMethod.GET) private Map<String,Object> removeArea(@RequestParam("areaId") Integer areaId){ Map<String,Object> modelMap = new HashMap<String, Object>() ; modelMap.put("success",areaService.deleteArea(areaId)); return modelMap; } }
4.启动SpringBoot项目,访问http://localhost:8080/demo/swagger-ui.html页面,注意了,我这里是由于在application.properties配置了项目路径server.servlet.context-path=/demo,因此才在上面的url加上/demo,通常若无特殊的配置,直接访问http://localhost:8080/swagger-ui.html便可。后端
Swagger UI界面绝对有颜有值!画面小清新,并且API很是直观。点击页面上的url,可查看API文档api-docs,不只如此,我们是能够测试接口的哟~简单测个 根据id查询区域信息 的接口吧,点击将其展开。api
点击 Try it out ,我们得输个int类型的区域ID作参数,输入完后点击execute后就能够看到结果啦!app
迟到两年的swagger,算是正式认识了。前后端分离
日ji