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

简介: 简介   号称:世界最流行的API框架 官网:http://swagger.io/ 解决什么问题:在前后台分离的开发模式中,减小接口定义沟通成本,方便开发过程中测试,自动生成接口文档。 实例代码位置:https://github.com/pumadong/cl-roadshow/tree/master/roadshow-swagger   swagger使用方式   第一种 定义YAML文件,然后可以生成各种语言的代码框架,对于后台程序员来说,较少人会愿意写出一堆YAML格式。

简介

 

号称:世界最流行的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
 

 

相关文章
|
1月前
|
API
用 Koa 框架实现一个简单的 RESTful API
用 Koa 框架实现一个简单的 RESTful API
|
2月前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
58 4
|
2月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
159 3
|
23天前
|
Java 测试技术 API
详解Swagger:Spring Boot中的API文档生成与测试工具
详解Swagger:Spring Boot中的API文档生成与测试工具
34 4
|
28天前
|
缓存 API 数据库
Python哪个框架合适开发速卖通商品详情api?
在跨境电商平台速卖通的商品详情数据获取与整合中,Python 语言及其多种框架(如 Flask、Django、Tornado 和 FastAPI)提供了高效解决方案。Flask 简洁灵活,适合快速开发;Django 功能全面,适用于大型项目;Tornado 性能卓越,擅长处理高并发;FastAPI 结合类型提示和异步编程,开发体验优秀。选择合适的框架需综合考虑项目规模、性能要求和团队技术栈。
26 2
|
1月前
|
JSON JavaScript 中间件
Koa框架下的RESTful API设计与实现
在现代 Web 开发中,构建高效、可维护的 API 是至关重要的。Koa 是一个流行的 Node.js Web 应用框架,它具有简洁、灵活和强大的特性,非常适合用于设计和实现 RESTful API。
|
1月前
|
开发框架 Java 关系型数据库
Java哪个框架适合开发API接口?
在快速发展的软件开发领域,API接口连接了不同的系统和服务。Java作为成熟的编程语言,其生态系统中出现了许多API开发框架。Magic-API因其独特优势和强大功能,成为Java开发者优选的API开发框架。本文将从核心优势、实际应用价值及未来展望等方面,深入探讨Magic-API为何值得选择。
42 2
|
1月前
|
API PHP 数据库
PHP中哪个框架最适合做API?
在数字化时代,API作为软件应用间通信的桥梁至关重要。本文探讨了PHP中适合API开发的主流框架,包括Laravel、Symfony、Lumen、Slim、Yii和Phalcon,分析了它们的特点和优势,帮助开发者选择合适的框架,提高开发效率、保证接口稳定性和安全性。
59 3
|
1月前
|
JavaScript 中间件 API
Node.js进阶:Koa框架下的RESTful API设计与实现
【10月更文挑战第28天】本文介绍了如何在Koa框架下设计与实现RESTful API。首先概述了Koa框架的特点,接着讲解了RESTful API的设计原则,包括无状态和统一接口。最后,通过一个简单的博客系统示例,详细展示了如何使用Koa和koa-router实现常见的CRUD操作,包括获取、创建、更新和删除文章。
48 4
|
1月前
|
安全 API 数据库
Python哪个框架合适开发淘宝商品详情api?
在数字化商业时代,开发淘宝商品详情API成为企业拓展业务的重要手段。Python凭借其强大的框架支持,如Flask、Django、Tornado和FastAPI,为API开发提供了多样化的选择。本文探讨了这些框架的特点、优势及应用场景,帮助开发者根据项目需求选择最合适的工具,确保API的高效、稳定与可扩展性。
30 0