swagger介绍
Swagger是全球最大的OpenAPI规范(OAS)API开发工具框架,支持从设计和文档到测试和部署的整个API生命周
期的开发。
swagger接口生成工作原理:
1、系统启动,扫描到api工程中的Swagger2Configuration类
2、在此类中指定了包路径com.baidu,找到在此包下及子包下标记有@RestController的Controller类
3、根据controller类中的Swagger注解生成接口文档。启动cms服务工程,查看接口文档,请求:
项目名/swagger-ui.ht
http://localhost:8080/swagger-ui.html
Swagger常用注解
@Api:修饰整个类,描述Controller的作用
@ApiOperation:描述一个类的一个方法,或者说一个接口
@ApiParam:单个参数描述
@ApiModel:用对象来接收参数
@ApiModelProperty:用对象接收参数时,描述对象的一个字段
@ApiResponse:HTTP响应其中1个描述
@ApiResponses:HTTP响应整体描述
@ApiIgnore:使用该注解忽略这个API
@ApiError :发生错误返回的信息
@ApiImplicitParam:一个请求参数
@ApiImplicitParams:多个请求参数
Swagger注解配置类:
Swagger注解配置类:
@Configuration
@EnableSwagger2
public class Swagger2Configuration {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.baidu"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("百度api文档")
.description("百度api文档")
.version("1.0")
.build();
}
}
Swagger Api接口:
@Api(value="cms页面管理接口",description = "cms页面管理接口,提供页面的增、删、改、查")
public interface CmsPageControllerApi {
@ApiOperation("分页查询页面列表")
@ApiImplicitParams({
@ApiImplicitParam(name="page",value = "页码",required=true,paramType="path",dataType="int"),
@ApiImplicitParam(name="size",value = "每页记录数",required=true,paramType="path",dataType="int")
})
public QueryResponseResult findList(int page, int size, QueryPageRequest queryPageRequest);
@ApiOperation("新增页面")
public CmsPageResult add(CmsPage cmsPage);
@ApiOperation("根据页面id查询页面信息")
public CmsPage findById(String id);
@ApiOperation("修改页面")
public CmsPageResult edit(String id,CmsPage cmsPage);
@ApiOperation("删除页面")
public ResponseResult delete(String id);
@ApiOperation("页面发布")
public ResponseResult post(String pageId);
}
测试类:
Controller启动类:
@SpringBootApplication
@EntityScan("com.baidu.framework.domain.cms")
@ComponentScan("com.baidu.api")
@ComponentScan(basePackages={"com.baidu.framework"})
@ComponentScan(basePackages={"com.baidu.manage_cms"})
public class ManageCmsApplication {
public static void main(String[] args) {
SpringApplication.run(ManageCmsApplication.class,args);
}
@Bean
public RestTemplate restTemplate(){
return new RestTemplate(new OkHttp3ClientHttpRequestFactory());
}
}
Controller测试调用类:
@RestController
@RequestMapping("/cms/page")
public class CmsPageController implements CmsPageControllerApi {
@Autowired
PageService pageService;
@Override
@GetMapping("/list/{page}/{size}")
public QueryResponseResult findList(@PathVariable("page") int page, @PathVariable("size")int size, QueryPageRequest queryPageRequest) {
return pageService.findList(page,size,queryPageRequest);
}
@Override
@PostMapping("/add")
public CmsPageResult add(@RequestBody CmsPage cmsPage) {
return pageService.add(cmsPage);
}
@Override
@GetMapping("/get/{id}")
public CmsPage findById(@PathVariable("id") String id) {
return pageService.getById(id);
}
@Override
@PutMapping("/edit/{id}")
public CmsPageResult edit(@PathVariable("id")String id, @RequestBody CmsPage cmsPage) {
return pageService.update(id,cmsPage);
}
@Override
@DeleteMapping("/del/{id}")
public ResponseResult delete(@PathVariable("id") String id) {
return pageService.delete(id);
}
@Override
@PostMapping("/postPage/{pageId}")
public ResponseResult post(@PathVariable("pageId") String pageId) {
return pageService.post(pageId);
}
}
@Data
@ToString
public class QueryPageRequest extends RequestData {
@ApiModelProperty("站点id")
private String siteId;
@ApiModelProperty("页面ID")
private String pageId;
@ApiModelProperty("页面名称")
private String pageName;
@ApiModelProperty("页面别名")
private String pageAliase;
@ApiModelProperty("模版id")
private String templateId;
}
Swagger依赖
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
</dependency>