spring boot集成swagger2:
swagger2是一个基于restful的开源设计,构建,文档,访问的开源工具集.开发中它的在线可视化文档功能,可以动态生成文档,简化前后对接工作.以下是Java在spring boot中使用方式:
- 引入maven依赖:
springfox-swagger2是swagger核心代码;springfox-swagger-ui提供静态jsUI可视化页面
io.springfox springfox-swagger2 2.6.0 io.springfox springfox-swagger-ui 2.6.0
- 启用swagger
package com.ssth.exchange.exsite; import org.mybatis.spring.annotation.MapperScan;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.annotation.Configuration;import springfox.documentation.swagger2.annotations.EnableSwagger2; @SpringBootApplication(scanBasePackages = { "com.ssth.exchange.exsite"})@Configuration@MapperScan("com.ssth.exchange.exsite.mapper")@EnableSwagger2public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); }}
使用@EnableSwagger2注解启用swagger
- 在接口中添加对应注解
package com.ssth.exchange.exsite.controller; import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.CrossOrigin;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.bind.annotation.RestController; import com.ssth.exchange.exsite.controller.basic.ExsiteBaseController;import com.ssth.exchange.exsite.controller.request.NavigationReq;import com.ssth.exchange.exsite.controller.response.NavigationResp;import com.ssth.exchange.exsite.controller.response.ResponseEntity;import com.ssth.exchange.exsite.service.HomeService; import io.swagger.annotations.Api;import io.swagger.annotations.ApiOperation; /*** @Description 首页控制器* @author chengmuyu* @date 2018年5月31日 下午2:31:12*/@RestController@RequestMapping("/home")@ResponseBody@CrossOrigin@Api(value="首页接口",consumes="application/json")public class HomeController extends ExsiteBaseController { @Autowired private HomeService homeService; /** * @Description 获取导航列表 * @param nav 导航查询参数 * @return */ @RequestMapping(value = "list/nav",method = RequestMethod.POST) @ApiOperation(value="获取导航列表", httpMethod = "POST", response = NavigationResp.class) public ResponseEntity
> listNavigation(@RequestBody NavigationReq nav) { return ResponseEntity.successResponse(homeService.listNavigation(nav.getPid())); }}
对应注解说明:
@Api:修饰整个类,value:描述Controller的作用,consumes:声明参数类型
@ApiOperation:修饰请求接口.value:描述接口;httpMethod:接口请求方式;response:定义接口响应实体;
- 实体声明定义
package com.ssth.exchange.exsite.controller.request; import io.swagger.annotations.ApiModel;import io.swagger.annotations.ApiModelProperty; /*** @Description 导航请求实体* @author chengmuyu* @date 2018年5月31日 下午3:04:05*/@ApiModel(value = "导航请求")public class NavigationReq { @ApiModelProperty(value = "导航父id,null表示查询一级目录") private String pid;}
@ApiModel:修饰实体类
@ApiModelProperty:修饰实体参数
- Swagger常用注解
swagger通过注解表明该接口会生成文档,包括接口名、请求方法、参数、返回信息的等等。@Api:修饰整个类,描述Controller的作用@ApiOperation:描述一个类的一个方法,或者说一个接口@ApiParam:单个参数描述@ApiModel:用对象来接收参数@ApiProperty:用对象接收参数时,描述对象的一个字段@ApiResponse:HTTP响应其中1个描述@ApiResponses:HTTP响应整体描述@ApiIgnore:使用该注解忽略这个API@ApiError :发生错误返回的信息@ApiImplicitParam:一个请求参数@ApiImplicitParams:多个请求参数
官方示例文档地址: