RESTful风格的Web服务框架 Swagger

Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。Swagger 让部署管理和使用功能强大的API从未如此简单。

  1. 创建工程

 image001

1.REST API

  1. import javax.ws.rs.Consumes;  
  2.   
  3. import javax.ws.rs.GET;  
  4.   
  5. import javax.ws.rs.POST;  
  6.   
  7. import javax.ws.rs.Path;  
  8.   
  9. import javax.ws.rs.PathParam;  
  10.   
  11. import javax.ws.rs.Produces;  
  12.   
  13. import javax.ws.rs.core.MediaType;  
  14.   
  15. import com.wordnik.swagger.annotations.Api;  
  16.   
  17. import com.wordnik.swagger.annotations.ApiOperation;  
  18.   
  19. @Path(“/user”)  
  20.   
  21. @Api(value = “/user”, description = “User REST for Integration Testing”)  
  22.   
  23. public interface UserService {  
  24.   
  25.     @GET  
  26.   
  27.     @Path(“/getUser/{username}”)  
  28.   
  29.     @Consumes(MediaType.APPLICATION_JSON)  
  30.   
  31.     @Produces(MediaType.APPLICATION_JSON)  
  32.   
  33.     @ApiOperation(value = “Get user details”, response = User.class)  
  34.   
  35.     public User getUser(@PathParam(“username”) String username);  
  36.   
  37.     @POST  
  38.   
  39.     @Path(“/saveUser”)  
  40.   
  41.     @Consumes(MediaType.APPLICATION_JSON)  
  42.   
  43.     @Produces(MediaType.APPLICATION_JSON)  
  44.   
  45.     @ApiOperation(value = “Save user details”, response = User.class)  
  46.   
  47.     public User getUser(User user);  
  48.   
  49. }  

2.Swagger Config

  1. <!– Swagger API listing resource –>  
  2.     <bean id=“swaggerResourceJSON”  
  3.         class=“com.wordnik.swagger.jaxrs.listing.ApiListingResourceJSON” />  
  4.    
  5.     <!– Swagger writers –>  
  6.     <bean id=“resourceWriter”  
  7.         class=“com.wordnik.swagger.jaxrs.listing.ResourceListingProvider” />  
  8.     <bean id=“apiWriter”  
  9.         class=“com.wordnik.swagger.jaxrs.listing.ApiDeclarationProvider” />  
  10.    
  11.     <jaxrs:server address=“/sw” id=“swagger”>  
  12.         <jaxrs:serviceBeans>  
  13.             <ref bean=“swaggerResourceJSON” />  
  14.         </jaxrs:serviceBeans>  
  15.         <jaxrs:providers>  
  16.             <ref bean=“resourceWriter” />  
  17.             <ref bean=“apiWriter” />  
  18.         </jaxrs:providers>  
  19.     </jaxrs:server>  
  20.    
  21.     <bean id=“swaggerConfig”>  
  22.         <property name=“resourcePackage” value=“com.xymiyue ” />  
  23.         <property name=“version” value=“2.0″ />  
  24.         <property name=“basePath” value=“http://localhost:8080/SwaggerUI-Integration/rest” />  
  25.         <property name=“title” value=“Swagger UI Integration Sample” />  
  26.         <property name=“description”  
  27.             value=“Swagger UI Integration Sample for demonstrating its working.” />  
  28.         <property name=“contact” value=“hi@wangbaocai.cn” />  
  29.         <property name=“scan” value=“true” />  
  30.     </bean>  

3.Swagger UI

image002

UI页面参考 https://github.com/Duttor/swagger-ui

参考示例工程:

https://github.com/saurabh29july/SwaggerUI-Integration

http://wangbaocai.cn/?p=1204

原文地址:https://www.cnblogs.com/softidea/p/5790150.html