Swagger入门
新手入门Swagger看了很多博客,竟然没有一个是步骤齐全的或直接能运行的。于是CSDN下载了SSM+Swagger整合的demo,一顿瞎整,终于可以运行了。
不容易,因此分享这篇博客,祝新手朋友们早日脱坑!
注意:如果存在token验证或拦截的请注释掉相应的方法,Swagger才能正常使用。
一、pom.xml导入jar包
<!-- swagger -->
<dependency>
<groupId>com.mangofactory</groupId>
<artifactId>swagger-springmvc</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>com.mangofactory</groupId>
<artifactId>swagger-models</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>com.wordnik</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.3.11</version>
</dependency>
<!-- swagger-springmvc dependencies -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.5.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.5.4</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>15.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml</groupId>
<artifactId>classmate</artifactId>
<version>1.1.0</version>
</dependency>
选择:如遇到jdk1.5不能编译请参考下面,这个只是极少数情况,比如你的项目是拷来的,没有这种问题请忽略。

二、编写Swagger类

package com.shuyu.config; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import com.mangofactory.swagger.configuration.SpringSwaggerConfig;
import com.mangofactory.swagger.models.dto.ApiInfo;
import com.mangofactory.swagger.plugin.EnableSwagger;
import com.mangofactory.swagger.plugin.SwaggerSpringMvcPlugin; /**
* @ClassName: SwaggerConfig
* @Description: swagger初始化配置文件
* @author lanhaifeng
* @date 2018年08月13日 下午14:51:50
* @version V1.0
*/
@EnableSwagger
public class SwaggerConfig{
private SpringSwaggerConfig springSwaggerConfig; /**
* Required to autowire SpringSwaggerConfig
*/
@Autowired
public void setSpringSwaggerConfig(SpringSwaggerConfig springSwaggerConfig) {
this.springSwaggerConfig = springSwaggerConfig;
} /**
* Every SwaggerSpringMvcPlugin bean is picked up by the swagger-mvc framework -
* allowing for multiple swagger groups i.e. same code base multiple swagger
* resource listings.
*/
@Bean
public SwaggerSpringMvcPlugin customImplementation() {
return new SwaggerSpringMvcPlugin(this.springSwaggerConfig).apiInfo(apiInfo());
} private ApiInfo apiInfo() {
ApiInfo apiInfo = new ApiInfo("Test项目API", "spring-API swagger测试", "My Apps API terms of service",
"iot_wangshuyu@126.com", "web app", "My Apps API License URL");
return apiInfo;
} } 三、controller类注解。其实只需要关注:@Api和@ApiOperation
package com.shuyu.controller; import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.shuyu.service.TestService;
import com.wordnik.swagger.annotations.Api;
import com.wordnik.swagger.annotations.ApiOperation; @Controller
@RequestMapping(value="/test")
@Api(value="test",description="测试接口描述")
public class TestController { @Autowired
private HttpServletRequest request;
@Autowired
private TestService service; /**
* @Title: getHeader @Description: TODO @param @return @return String @throws
*/
@RequestMapping(value="/header")
@ResponseBody
@ApiOperation(value="根据header户信息",httpMethod="GET",notes="get user by id")
public Map<String, Object> getHeader() {
Map<String, Object> map=new HashMap<>();
map.put("header", getHeadersInfo());
map.put("user-agent", getUserAgent());
return map;
} @RequestMapping(value="/sql")
@ResponseBody
@ApiOperation(value="数据库查询",httpMethod="GET",notes="mysql数据库查询操作")
public List<Map<String, String>> getSql(@RequestParam(value="name",required=true)String name) {
System.out.println(getToken());
return service.query(name);
} // get user agent
private String getUserAgent() {
return request.getHeader("user-agent");
} // get request headers
private Map<String, String> getHeadersInfo() {
Map<String, String> map = new HashMap<String, String>();
Enumeration headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
String key = (String) headerNames.nextElement();
String value = request.getHeader(key);
map.put(key, value);
}
return map;
} // get request headers
private String getToken() {
Enumeration headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
String key = (String) headerNames.nextElement();
if("token".equals(key)) {
String value = request.getHeader(key);
return value; }
}
return null;
}
} 四、springmvc.xml配置加入
<!-- 4:扫描web相关的bean --> <context:component-scan base-package="com.shuyu.controller" /> <!--整合 Swagger -->
<!-- 将 springSwaggerConfig加载到spring容器 -->
<bean class="com.mangofactory.swagger.configuration.SpringSwaggerConfig" />
<!-- 将自定义的swagger配置类加载到spring容器 -->
<bean class="com.shuyu.config.SwaggerConfig" />
<!-- 静态资源文件,不会被Spring MVC拦截 -->
<mvc:resources mapping="/swagger/**" location="/swagger/" /> 五、在webapp文件下创建swagger文件夹,下载swagger-ui解压,把里面的dist文件复制到swagger文件下
下载地址https://github.com/swagger-api/swagger-ui
注意下图:index.html中的url="http://localhost:8080/api-docs",如果你在tomcat配置时加入了项目名称请在8080后面加入项目名称

六、汉化成中文,在index.html中引入汉化的两个js文件
<script src="lang/translator.js" type='text/javascript'></script>
<script src="lang/zh-cn.js" type='text/javascript'></script>

七、访问:输入http://localhost:8080/swagger/dist/index.html
注:我的项目在tomcat配置时是没有加项目名的,因此访问路径是http://localhost:8080/swagger/dist/index.html

Swagger入门的更多相关文章
- RESTful API & Swagger入门
什么是RESTful API? 原文地址:https://blog.csdn.net/hjc1984117/article/details/77334616 Swagger入门教程 https://w ...
- 转:swagger 入门
前言 swagger ui是一个API在线文档生成和测试的利器,目前发现最好用的. 为什么好用?Demo 传送门 支持API自动生成同步的在线文档 这些文档可用于项目内部API审核 方便测试人员了解A ...
- Swagger入门教程
[译]5.41 Swagger tutorial 单击此处查看原文 更多概念参见:Implementing Swagger with your API docs 关于 Swagger Swagger能 ...
- swagger 入门
官网:http://swagger.io/ Swagger UI 下载地址: https://github.com/swagger-api/swagger-ui 文档:README.md ### Do ...
- Azure 应用服务中的 API 应用、ASP.NET 和 Swagger 入门
学习内容: 如何通过 Visual Studio 2015 中的内置工具在 Azure 应用服务中创建和部署 API 应用. 如何使用 Swashbuckle NuGet 包动态生成 Swagger ...
- Spring MVC学习总结(8)——Swagger入门详解
前言 Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件.本文简单介绍了在项目中集成swagger的方法和一些常见问题.如果想深入分析项目源码,了解更多内容,见参考资料. S ...
- Swagger入门教程(转)
[译]5.41 Swagger tutorial 单击此处查看原文 更多概念参见:Implementing Swagger with your API docs 关于 Swagger Swagger能 ...
- Spring Boot 2.x基础教程:Swagger静态文档的生成
前言 通过之前的两篇关于Swagger入门以及具体使用细节的介绍之后,我们已经能够轻松地为Spring MVC的Web项目自动构建出API文档了.如果您还不熟悉这块,可以先阅读: Spring Boo ...
- Swagger整合Jwt授权配置
Swagger整合Jwt授权配置 欢迎关注博主公众号「Java大师」, 专注于分享Java领域干货文章http://www.javaman.cn/sb2/swagger-jwt 一.Swagger入门 ...
随机推荐
- 51Nod1824 染色游戏 【Lucas定理】【FMT】【位运算】
我的FMT是在VFleaKing的论文中学到的.51Nod的评测机好恶心. 题目分析: 题目很明显是要你求一个类似卷积的式子.但是我们可以注意到前面具有组合数,如果拆成阶乘会很大,在模意义下你无法判断 ...
- 非阻赛IO模型
实例一: 只能在waitdata 阶段找到IO的解决方案 from concurrent.futures import ThreadPoolExecutor import socket server ...
- 用二分法定义平方根函数(Bisection method Square Root Python)
Python里面有内置(Built-in)的平方根函数:sqrt(),可以方便计算正数的平方根.那么,如果要自己定义一个sqrt函数,该怎么解决呢? 解决思路: 1. 大于等于1的正数n的方根,范围 ...
- appium 原理解析(转载雷子老师博客)
appium 原理解析 原博客地址:https://www.cnblogs.com/leiziv5/p/6427609.html Appium是 c/s模式的appium是基于 webdriver 协 ...
- Linux iptables设置
先举例子说明,若服务器网卡: eth0 10.10.0.100 eth0:0 10.10.0.200 eth0:1 10.10.0.201 eth0:2 10.10.0.202 只允许10.10.0. ...
- 【CF446C】DZY Loves Fibonacci Numbers (线段树 + 斐波那契数列)
Description 看题戳我 给你一个序列,要求支持区间加斐波那契数列和区间求和.\(~n \leq 3 \times 10 ^ 5, ~fib_1 = fib_2 = 1~\). Solut ...
- 【Loj117】有源汇上下界最小流(网络流)
[Loj117]有源汇上下界最小流(网络流) 题面 Loj 题解 还是模板题. #include<iostream> #include<cstdio> #include< ...
- cf1073G Yet Another LCP Problem (SA+权值线段树)
反正先求一遍sa 然后这个问题可以稍微转化一下 默认比较A.B数组中元素的大小都是比较它们rank的大小,毕竟两个位置的LCP就是它们rank的rmq 然后每次只要求B[j]>=A[i]的LCP ...
- scrapy 选择器
1.lxml(转自简书) from lxml import etree2 import requests3 45 url = " "6 html = requests.get(ur ...
- bzoj2457 双端队列
虽然分类在数据结构里,但是实际上是个贪心题...... 我自己一开始想到了一个错误的贪心.后来发现对于相等值的处理不行. 有个很神的转化,就是把排好序的队列以及对应的原下标都给搞出来. 然后考虑其中一 ...