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.png
而且,還可以對每一個接口進行測試(可能需要構造請求參數):
Screenshot_2019-01-21 Swagger UI(1).png