Swagger介紹-一套流行的API框架


簡介

 

號稱:世界最流行的API框架

官網:http://swagger.io/

解決什么問題:在前后台分離的開發模式中,減小接口定義溝通成本,方便開發過程中測試,自動生成接口文檔。

實例代碼位置:https://github.com/pumadong/cl-roadshow/tree/master/roadshow-swagger

 

swagger使用方式

 

第一種

定義YAML文件,然后可以生成各種語言的代碼框架,對於后台程序員來說,較少人會願意寫出一堆YAML格式。

第二種

swagger有各種語言的插件,可以通過配置及少量代碼,生成接口文檔及測試界面。

我們多做了:一次性的配置及少量注解代碼。

我們不用再做:1、到Wiki中更新接口文檔;2、Postman形式的測試;3、Curl形式的測試

 

swagger java使用介紹

 

對於一個SpringMVC項目,使用swagger的配置如下:

pom.xml

 

[html]  view plain  copy
 
 print?在CODE上查看代碼片派生到我的代碼片
  1. <!-- Swagger -->  
  2. <dependency>  
  3.     <groupId>io.swagger</groupId>  
  4.     <artifactId>swagger-core</artifactId>  
  5.     <version>1.5.8</version>  
  6. </dependency>  
  7. <dependency>  
  8.     <groupId>io.springfox</groupId>  
  9.     <artifactId>springfox-swagger2</artifactId>  
  10.     <version>2.4.0</version>  
  11. </dependency>  
  12. <dependency>  
  13.     <groupId>io.springfox</groupId>  
  14.     <artifactId>springfox-swagger-ui</artifactId>  
  15.     <version>2.4.0</version>  
  16. </dependency>  

 

SwaggerConfiguration.java

 

[java]  view plain  copy
 
 print?在CODE上查看代碼片派生到我的代碼片
  1. @Configuration  
  2. @EnableSwagger2  
  3. public class SwaggerConfiguration {  
  4.     @Bean  
  5.     public Docket api() {  
  6.         return new Docket(DocumentationType.SWAGGER_2)  
  7.                 .select()  
  8.                 .apis(RequestHandlerSelectors.any())  
  9.                 .paths(PathSelectors.any())  
  10.                 .build();  
  11.     }  
  12. }  

 

SwaggerWebMvcConfigurerAdapter.java

 

[java]  view plain  copy
 
 print?在CODE上查看代碼片派生到我的代碼片
  1. @Configuration  
  2. @EnableWebMvc  
  3. @ComponentScan(basePackages = "com.xx.travel.csc.stat.controller")  
  4. public class SwaggerWebMvcConfigurerAdapter extends WebMvcConfigurerAdapter {  
  5.    
  6.     @Bean  
  7.     public ViewResolver viewResolver() {  
  8.         InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();  
  9.         viewResolver.setViewClass(JstlView.class);  
  10.         viewResolver.setPrefix("/WEB-INF/views/");  
  11.         viewResolver.setSuffix(".jsp");  
  12.         return viewResolver;  
  13.     }  
  14.    
  15.     @Bean  
  16.     public MessageSource messageSource() {  
  17.         ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();  
  18.         messageSource.setBasename("messages");  
  19.         return messageSource;  
  20.     }  
  21.     @Override  
  22.     public void addResourceHandlers(ResourceHandlerRegistry registry) {  
  23.         super.addResourceHandlers(registry);  
  24.         registry.addResourceHandler("swagger-ui.html")  
  25.                 .addResourceLocations("classpath:/META-INF/resources/");  
  26.         registry.addResourceHandler("/webjars/**")  
  27.                 .addResourceLocations("classpath:/META-INF/resources/webjars/");  
  28.     }  
  29.     @Override  
  30.     public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {  
  31.         configurer.enable();  
  32.     }  
  33. }  

 

 

Controller實例

然后,只要在我們的Controller里面增加注解 ApiOperation和ApiParam 即可。

 

[java]  view plain  copy
 
 print?在CODE上查看代碼片派生到我的代碼片
  1. @Controller  
  2. @RequestMapping(value = "/stat")  
  3. public class SwaggerController {  
  4.        
  5.     @ResponseBody  
  6.     @RequestMapping(value = "/helloworld", method = RequestMethod.GET)  
  7.     @ApiOperation(nickname = "swagger-helloworld", value = "Swagger的世界", notes = "測試HelloWorld")  
  8.     public String helloWorld(@ApiParam(value = "昵稱") @RequestParam String nickname) {  
  9.         return "Hello world, " + nickname;  
  10.     }  
  11.        
  12.     @ResponseBody  
  13.     @RequestMapping(value = "/objectio", method = RequestMethod.POST)  
  14.     @ApiOperation(nickname = "swagger-objectio", value = "Swagger的ObjectIO", notes = "測試對象輸入輸出")  
  15.     public SwaggerOutput objectIo(@ApiParam(value = "輸入") @RequestBody SwaggerInput input) {  
  16.         SwaggerOutput output = new SwaggerOutput();  
  17.         output.setId(input.getId());  
  18.         output.setName("Swagger");  
  19.         return output;  
  20.     }  
  21. }  

 

Web界面

啟動項目,輸入Http://Path/swagger-ui.html,就可以給前端展示相關的API文檔,並像使用Postman以及Curl命令一樣,通過Web界面進行接口測試。

 

 http://blog.csdn.net/puma_dong/article/details/51752099
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM