1. 最近参与公司接口编写,Android和IOS端都要调用这些接口,需要对接调试,如果没有一个接口文档,管理接口,别人用了接口,也不知道接口怎么用,接口上有什么参数,哪些是必须参数,哪些是非必须参数,于是研究了Swagger框架应用到项目中去,Swagger与Spring项目结合,Spring必须是4.0以上版本,下面是研究的小小demo:

1、引入Swagger的jar包,由于我的是Maven项目,所以在pom.xml中(注意Spring是4.0以上版本)

  1. <dependency>
  2. <groupId>io.springfox</groupId>
  3. <artifactId>springfox-swagger2</artifactId>
  4. <version>2.0.2</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>com.fasterxml.jackson.core</groupId>
  8. <artifactId>jackson-annotations</artifactId>
  9. <version>2.4.4</version>
  10. </dependency>
  11. <dependency>
  12. <groupId>com.fasterxml.jackson.core</groupId>
  13. <artifactId>jackson-databind</artifactId>
  14. <version>2.4.4</version>
  15. </dependency>
  16. <dependency>
  17. <groupId>com.fasterxml.jackson.core</groupId>
  18. <artifactId>jackson-core</artifactId>
  19. <version>2.4.4</version>
  20. </dependency>

2、新增Swagger配置代码

  1. package cn.;
  1. import org.springframework.context.annotation.Bean;
  2. import org.springframework.context.annotation.Configuration;
  3. import org.springframework.context.annotation.ComponentScan;
  4. import org.springframework.web.servlet.config.annotation.EnableWebMvc;
  5. import springfox.documentation.spi.DocumentationType;
  6. import springfox.documentation.spring.web.plugins.Docket;
  7. import springfox.documentation.swagger2.annotations.EnableSwagger2;
  8. @Configuration
  9. @EnableWebMvc
  10. @EnableSwagger2
  11. @ComponentScan(basePackages ={"com.test.api"})
  12. /**
  13. *
  14. * @author xiaozhou
  15. */
  16. public class SwaggerConfig {
  17. /**
  18. * Every Docket bean is picked up by the swagger-mvc framework - allowing for multiple
  19. * swagger groups i.e. same code base multiple swagger resource listings.
  20. */
  21. @Bean
  22. public Docket customDocket(){
  23. return new Docket(DocumentationType.SWAGGER_2);
  24. }
  25. }

3、修改applicationContext.xml

  1. <bean class="cn.conf.SwaggerConfig"/>

4、增加一个测试的ContactController

  1. @Api(value = "contacts-api", description = "有关于用户的CURD操作", position = 5)
  2. @Controller
  3. @RequestMapping("/contacts")
  4. public class ContactController {
  5. @Autowired ContactService contactService;
  6. @ResponseBody
  7. @RequestMapping(value="/1.0/contact/get.do/{id}",method=RequestMethod.GET)
  8. public Contact get(@PathVariable Long id) {
  9. return contactService.find(id);
  10. }
  11. @ApiOperation(value = "创建用户", notes = "返回用户实体对象", response = Contact.class, position = 2)
  12. @RequestMapping(value = "/1.0/contact/add.do", method=RequestMethod.POST)
  13. public void add(@RequestBody Contact contact,HttpServletResponse response) {
  14. contactService.create(contact);
  15. String location = ServletUriComponentsBuilder.fromCurrentRequest()
  16. .pathSegment("{id}").buildAndExpand(contact.getId())
  17. .toUriString();
  18. response.setHeader("Location",location);
  19. }
  20. @RequestMapping(value="/1.0/contact/update.do/{id}",method=RequestMethod.POST)
  21. @ApiResponses(value = {
  22. @ApiResponse(code = 200, message = "更新成功", response = Contact.class),
  23. @ApiResponse(code = 404, message = "找不到页面"),
  24. @ApiResponse(code = 500, message = "内部报错")}
  25. )
  26. public void update(@ApiParam(name="id", value="编号", required=true)@PathVariable Integer id,@RequestBody Contact contact) {
  27. contact.setId(id);;
  28. contactService.update(contact);
  29. }
  30. }

5、添加Swagger UI配置

从网上下载SwaggerUI项目,将dist下所有内容拷贝到本地项目webapp下面如下图

6、修改index修改index.html

将index.html中http://petstore.swagger.wordnik.com/v2/swagger.json修改为http://localhost:8080/v2/api-docs

7、启动项目,访问http://localhost:8080/v2/index.html即可看到如下所示页面:

参考资料:

https://raibledesigns.com/rd/entry/documenting_your_spring_api_with

http://www.2cto.com/kf/201502/376959.html

http://www.3pillarglobal.com/insights/restful-api-documentation-using-swagger-and-spring-mvc

http://springfox.github.io/

Swagger+Spring MVC框架学习分享的更多相关文章

  1. Spring MVC 框架学习

    一.spirng的简介 Spring是一个开源框架,它由Rod Johnson创建.它是为了解决企业应用开发的复杂性而创建的.Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情. ...

  2. Swagger框架学习分享

    Swagger框架学习分享 转至元数据结尾 Created and last modified by 刘新宇 大约1分钟曾经 pageId=162045803#page-metadata-start& ...

  3. 【Spring学习笔记-MVC-5】利用spring MVC框架,实现ajax异步请求以及json数据的返回

    作者:ssslinppp      时间:2015年5月26日 15:32:51 1. 摘要 本文讲解如何利用spring MVC框架,实现ajax异步请求以及json数据的返回. Spring MV ...

  4. Spring MVC 框架的架包分析,功能作用,优点

    由于刚搭建完一个MVC框架,决定分享一下我搭建过程中学习到的一些东西.我觉得不管你是个初级程序员还是高级程序员抑或是软件架构师,在学习和了解一个框架的时候,首先都应该知道的是这个框架的原理和与其有关j ...

  5. 从零开始学 Java - 搭建 Spring MVC 框架

    没有什么比一个时代的没落更令人伤感的了 整个社会和人都在追求创新.进步.成长,没有人愿意停步不前,一个个老事物慢慢从我们生活中消失掉真的令人那么伤感么?或者说被取代?我想有些是的,但有些东西其实并不是 ...

  6. 【WEB】初探Spring MVC框架

    Spring MVC框架算是当下比较流行的Java开源框架.但实话实说,做了几年WEB项目,完全没有SpringMVC实战经验,乃至在某些交流场合下被同行严重鄙视“奥特曼”了.“心塞”的同时,只好默默 ...

  7. Spring MVC框架搭建

    Spring MVC篇一.搭建Spring MVC框架 本项目旨在搭建一个简单的Spring MVC框架,了解Spring MVC的基础配置等内容. 一.项目结构 本项目使用idea intellij ...

  8. Spring MVC框架下的第一个Hello World程序

    本程序是一个maven程序,使用maven方便管理jar包和程序,简化了操作步骤.本程序的目的是通过一个简单的程序,了解Spring MVC框架的基本工作流程,由简入繁的学习Spring MVC框架, ...

  9. 手写Spring MVC框架(一) 实现简易版mvc框架

    前言 前面几篇文章中,我们讲解了Spring MVC执⾏的⼤致原理及关键组件的源码解析,今天,我们来模仿它⼿写⾃⼰的mvc框架. 先梳理一下需要实现的功能点: tomcat加载配置文件web.xml: ...

随机推荐

  1. 《UNIX环境高级编程》笔记--线程的标识、创建和终止

    1.线程标识 就像每个进程都有一个进程ID一样,每个线程都有一个线程ID.进程ID在整个系统中是唯一的,但线程ID只在它所属的 进程环境中有效. 线程ID使用pthread_t数据类型来表示,实现的时 ...

  2. background-size使用

    background-size: left center | 0% 50% | cover | contain backgound-size: left center | 0% 50%; 这个指的是背 ...

  3. src 和 href 的区别

    因为理解不深,到写外部加载Javascript文件或者css文件的时候总是需要去找个例子,这样可不好.现在总结下 href 属性规定被链接文档的位置(URL). href是hyperrefresh的缩 ...

  4. spring4之依赖注入的三种方式

    1.Setter注入 <bean id="helloWorld" class="com.jdw.spring.beans.HelloWorld"> ...

  5. python----设置默认编码

    问题:python的默认编码是ascii.在处理中文的时候可能会出现乱码的情况:这个时候我们就需要把编码设置为对应的编码了. 解决方案: 对python文件的头部做如下修改 import sys re ...

  6. cad移动图案

    1.键盘按快捷键M,鼠标变成小方块,选中图案,右击,左击拖动图像 2.选中图像,键盘按m,拖动图像 3.选中图像,右击,图像移动

  7. Tempo 2.0

    Tempo 2.0 Tempo is an easy, intuitive JavaScript rendering engine that enables you to craft data tem ...

  8. Storm csdn

    blog.csdn.net/lonelytrooperblog.csdn.net/leytton http://my.oschina.net/apdplat/blog/308396

  9. wifi相关协议

    IEEE 802.11Wi-Fi 协议摘要 协议 频率 信号 最大,数据率 传统802.11 2.4GHz FHSS或DSSS 2Mbps 802.11a 5GHz OFDM 54Mbps 802.1 ...

  10. poj 2540 Hotter Colder 切割多边形

    /* poj 2540 Hotter Colder 切割多边形 用两点的中垂线切割多边形,根据冷热来判断要哪一半 然后输出面积 */ #include <stdio.h> #include ...