Swagger
项目是一个可以将Restful
服务的接口api doc
可视化的工具,而且提供了在线调试api
的功能,对于开发的Restful
服务非常友好,因此可以将其集成到项目中来。
这里通过spring initializer
创建一个结构简单的spring boot
程序,来展示Swagger
的使用, 完整的项目示例参见:
-
创建一个
spring boot web
应用,导入web
,jpa
,h2
,test
等模块。 -
引入
maven
依赖
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
- 以一个
Person
模型的查询(query)为例,创建POJO
类Person
、数据访问ContactDao
接口、服务ContactService
接口、以及对应的Restful
服务控制器Controller
。其中,在Controller
中暴露3个Rest
服务接口:
@RestController
@RequestMapping("/")
public class ContactController {
@Autowired
private ContactService contactService;
@GetMapping("/test")
public String test() {
return "hello world";
}
@GetMapping("/persons")
public Iterable<Person> getAllPersons() {
return contactService.getAllContacts();
}
@GetMapping("/getPersonById")
public Person getPersonById(@RequestParam("id") int personId) {
return contactService.getContactById(personId);
}
-
/test
用来测试 -
/persons
查询所有Person
对象 -
getPersonById
根据id
来查询对应的Person
- 配置
Swagger
使用注解@EnableSwagger2
来启用相关功能。
@Configuration
@EnableSwagger2
public class SwaggerConfig extends WebMvcConfigurationSupport {
@Bean
public Docket productApi() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("io.github.ted005.swaggerdemo.controller"))
.build();
}
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
- 运行查看
api doc
, 打开http://localhost:8080/swagger-ui.html
,会列出提供的api
接口。
而且,还可以对每一个接口进行测试(可能需要构造请求参数):
Screenshot_2019-01-21 Swagger UI(1).png
网友评论