1.Spring MVC配置文件中的配置

[java] view plain copy

  1. <!-- 设置使用注解的类所在的jar包,只加载controller类 -->
  2. <context:component-scan base-package="com.jay.plat.config.controller" />
[java] view plain copy

  1. <!-- 使用 Swagger Restful API文档时,添加此注解 -->
  2. <mvc:default-servlet-handler />
  1. <mvc:resources mapping="swagger-ui.html" location="classpath:/META-INF/resources/"/>
  2. <mvc:resources mapping="/webjars/**" location="classpath:/META-INF/resources/webjars/"/>

2.maven依赖

[html] view plain copy

  1. <!-- 构建Restful API -->
  2. <dependency>
  3. <groupId>io.springfox</groupId>
  4. <artifactId>springfox-swagger2</artifactId>
  5. <version>2.4.0</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>io.springfox</groupId>
  9. <artifactId>springfox-swagger-ui</artifactId>
  10. <version>2.4.0</version>
  11. </dependency>

3.Swagger配置文件

[java] view plain copy

  1. package com.jay.plat.config.util;
  2. import org.springframework.context.annotation.Bean;
  3. import org.springframework.context.annotation.ComponentScan;
  4. import org.springframework.context.annotation.Configuration;
  5. import org.springframework.web.servlet.config.annotation.EnableWebMvc;
  6. import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
  7. import springfox.documentation.builders.ApiInfoBuilder;
  8. import springfox.documentation.builders.PathSelectors;
  9. import springfox.documentation.builders.RequestHandlerSelectors;
  10. import springfox.documentation.service.ApiInfo;
  11. import springfox.documentation.spi.DocumentationType;
  12. import springfox.documentation.spring.web.plugins.Docket;
  13. import springfox.documentation.swagger2.annotations.EnableSwagger2;
  14. /*
  15. * Restful API 访问路径:
  16. * http://IP:port/{context-path}/swagger-ui.html
  17. * eg:http://localhost:8080/jd-config-web/swagger-ui.html
  18. */
  19. @EnableWebMvc
  20. @EnableSwagger2
  21. @ComponentScan(basePackages = {"com.plat.config.controller"})
  22. @Configuration
  23. public class RestApiConfig extends WebMvcConfigurationSupport{
  24. @Bean
  25. public Docket createRestApi() {
  26. return new Docket(DocumentationType.SWAGGER_2)
  27. .apiInfo(apiInfo())
  28. .select()
  29. .apis(RequestHandlerSelectors.basePackage("com.jay.plat.config.controller"))
  30. .paths(PathSelectors.any())
  31. .build();
  32. }
  33. private ApiInfo apiInfo() {
  34. return new ApiInfoBuilder()
  35. .title("Spring 中使用Swagger2构建RESTful APIs")
  36. .termsOfServiceUrl("http://blog.csdn.net/he90227")
  37. .contact("逍遥飞鹤")
  38. .version("1.1")
  39. .build();
  40. }
  41. }

配置说明:

[html] view plain copy

  1. @Configuration 配置注解,自动在本类上下文加载一些环境变量信息
  2. @EnableWebMvc
  3. @EnableSwagger2 使swagger2生效
  4. @ComponentScan("com.myapp.packages") 需要扫描的包路径

4.Controller中使用注解添加API文档

[java] view plain copy

  1. package com.jay.spring.boot.demo10.swagger2.controller;
  2. import java.util.ArrayList;
  3. import java.util.Collections;
  4. import java.util.HashMap;
  5. import java.util.List;
  6. import java.util.Map;
  7. import org.springframework.web.bind.annotation.PathVariable;
  8. import org.springframework.web.bind.annotation.RequestBody;
  9. import org.springframework.web.bind.annotation.RequestMapping;
  10. import org.springframework.web.bind.annotation.RequestMethod;
  11. import org.springframework.web.bind.annotation.RestController;
  12. import com.jay.spring.boot.demo10.swagger2.bean.User;
  13. import io.swagger.annotations.ApiImplicitParam;
  14. import io.swagger.annotations.ApiImplicitParams;
  15. import io.swagger.annotations.ApiOperation;
  16. @RestController
  17. @RequestMapping(value = "/users") // 通过这里配置使下面的映射都在/users下,可去除
  18. public class UserController {
  19. static Map<Long, User> users = Collections.synchronizedMap(new HashMap<Long, User>());
  20. @ApiOperation(value = "获取用户列表", notes = "")
  21. @RequestMapping(value = { "" }, method = RequestMethod.GET)
  22. public List<User> getUserList() {
  23. List<User> r = new ArrayList<User>(users.values());
  24. return r;
  25. }
  26. @ApiOperation(value = "创建用户", notes = "根据User对象创建用户")
  27. @ApiImplicitParam(name = "user", value = "用户详细实体user", required = true, dataType = "User")
  28. @RequestMapping(value = "", method = RequestMethod.POST)
  29. public String postUser(@RequestBody User user) {
  30. users.put(user.getId(), user);
  31. return "success";
  32. }
  33. @ApiOperation(value = "获取用户详细信息", notes = "根据url的id来获取用户详细信息")
  34. @ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Long")
  35. @RequestMapping(value = "/{id}", method = RequestMethod.GET)
  36. public User getUser(@PathVariable Long id) {
  37. return users.get(id);
  38. }
  39. @ApiOperation(value = "更新用户详细信息", notes = "根据url的id来指定更新对象,并根据传过来的user信息来更新用户详细信息")
  40. @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Long"),
  41. @ApiImplicitParam(name = "user", value = "用户详细实体user", required = true, dataType = "User") })
  42. @RequestMapping(value = "/{id}", method = RequestMethod.PUT)
  43. public String putUser(@PathVariable Long id, @RequestBody User user) {
  44. User u = users.get(id);
  45. u.setName(user.getName());
  46. u.setAge(user.getAge());
  47. users.put(id, u);
  48. return "success";
  49. }
  50. @ApiOperation(value = "删除用户", notes = "根据url的id来指定删除对象")
  51. @ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Long")
  52. @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
  53. public String deleteUser(@PathVariable Long id) {
  54. users.remove(id);
  55. return "success";
  56. }
  57. }

5.效果展示

访问路径:
[java] view plain copy

  1. Restful API 访问路径:
  2. * http://IP:port/{context-path}/swagger-ui.html
  3. * eg:http://localhost:8080/jd-config-web/swagger-ui.html


参考:

Spring MVC中使用 Swagger2 构建Restful API的更多相关文章

  1. Spring Boot中使用Swagger2构建RESTful API文档

    在开发rest api的时候,为了减少与其他团队平时开发期间的频繁沟通成本,传统做法我们会创建一份RESTful API文档来记录所有接口细节,然而这样的做法有以下几个问题: 1.由于接口众多,并且细 ...

  2. Spring Boot中使用Swagger2生成RESTful API文档(转)

    效果如下图所示: 添加Swagger2依赖 在pom.xml中加入Swagger2的依赖 <!-- https://mvnrepository.com/artifact/io.springfox ...

  3. Spring Boot中使用Swagger2构建RESTful APIs

    关于 Swagger Swagger能成为最受欢迎的REST APIs文档生成工具之一,有以下几个原因: Swagger 可以生成一个具有互动性的API控制台,开发者可以用来快速学习和尝试API. S ...

  4. Spring Boot中使用Swagger2构建RESTful APIs介绍

    1.添加相关依赖 <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 --> <depen ...

  5. Spring MVC 中使用 Swagger2 构建动态 RESTful API

    当多终端(WEB/移动端)需要公用业务逻辑时,一般会构建 RESTful 风格的服务提供给多终端使用. 为了减少与对应终端开发团队频繁沟通成本,刚开始我们会创建一份 RESTful API 文档来记录 ...

  6. Spring Boot (21) 使用Swagger2构建restful API

    使用swagger可以与spring mvc程序配合组织出强大的restful api文档.它既可以减少我们创建文档的工作量,同时说明内容又整合入现实代码中,让维护文档和修改代码整合为一体,可以让我们 ...

  7. Spring Boot中使用Swagger2构建强大的RESTful API文档

    由于Spring Boot能够快速开发.便捷部署等特性,相信有很大一部分Spring Boot的用户会用来构建RESTful API.而我们构建RESTful API的目的通常都是由于多终端的原因,这 ...

  8. Spring Boot 中使用 Swagger2 构建强大的 RESTful API 文档

    项目现状:由于前后端分离,没有很好的前后端合作工具. 由于接口众多,并且细节复杂(需要考虑不同的HTTP请求类型.HTTP头部信息.HTTP请求内容等),高质量地创建这份文档本身就是件非常吃力的事,下 ...

  9. Spring Boot 入门系列(二十二)使用Swagger2构建 RESTful API文档

    前面介绍了如何Spring Boot 快速打造Restful API 接口,也介绍了如何优雅的实现 Api 版本控制,不清楚的可以看我之前的文章:https://www.cnblogs.com/zha ...

随机推荐

  1. Cocos Code IDE新建lua工程报错解决方案

    今天想用cocos code IDE新建一个工程,但是控制台报错:Read json file null failed, the reason is:null.我下载的是官方3.5源码,sdk,ndk ...

  2. 实体类调用泛型父类中的静态方法中执行CRUD——第二版

    using System; using System.Collections.Generic; using System.Data.Entity; using System.Linq; namespa ...

  3. rabbitMQ Connection timed out

    在VM中部署了一个rabbitMQ server ,在物理机上按照rabbitMQ官网上的 java的教程访问VM中的rabbitMQ报如下错误: Exception in thread " ...

  4. pwnable.kr-fd

    题目: 链接登录: ssh fd@pwnable.kr -p2222 查看文件及权限: ls –al 看到flag文件,但是当前用户fd并没有读权限. cat fd.c 分析程序: int argc ...

  5. swiper 内容超出纵向滚动 解决办法

    .swiper-slide { overflow: auto; }   var swiper = new Swiper('.swiper-container', { direction: 'verti ...

  6. redis入门指南-安装redis

    纸上得来终觉浅 绝知此事要躬行 Redis官方不支持window.微软发布了可在redis的分支.不建议使用 但我确实用了. win7 redis2.8.4  php5.6  apache2.4 ht ...

  7. 【61测试】【dp】【二分】【前缀和】【树剖】

    不要问我为什么昨天考的今天才贴解题报告.. 第一题: 给定3个字符串,求它们的最长公共子序列. 解: 考试时知道肯定是LCS的二维再加一维,用三维,可天堂有路你不走,地狱无门你偏来...灵机一动想出来 ...

  8. Model2模型介绍

    在JSP课程中有 Model1 模型的介绍 模型二: 实例接JSP课程,先去看JSP课程了

  9. C#日志记录函数

    错误日志记录在程序运行的实际维护中定位问题具有很大作用,日志越详细,反馈处理问题越方便. 常用的一个B/S架构下的日志函数. //日志记录函数 private void WriteLog( strin ...

  10. Linux filesystem detection

    16 down vote accepted The reason you can't find it is because, for the most part, it's not in the ke ...