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入门 ...
随机推荐
- python中的map函数
def f(x): return x * x """将一个全是数字的list变成平方形式""" def f2(): ls = [1, 2, ...
- 阿里云上,Ubuntu下配置Nginx,在tomcat中加了https协议就不可以了
问题 阿里云上,Ubuntu服务器,本来部署的是tomcat,并且使用了https 协议.后来为了静态资源分离集成了 nginx,nginx代理跳转到 tomcat.刚开始直接访问http 网址发现, ...
- IDEA @Contract annotation
IDEA @Contract annotation ----------------------------------- http://www.jetbrains.com/help/idea/con ...
- Android多种方法显示当前日期和时间
文章选自StackOverflow(简称:SOF)精选问答汇总系列文章之一,本系列文章将为读者分享国外最优质的精彩问与答,供读者学习和了解国外最新技术.本文探讨Android显示当前日期和时间的方法. ...
- [2017-7-28]Android Learning Day7
View动画效果 透明动画效果 旋转动画效果 移动动画效果 缩放动画效果 混合动画效果 1.透明动画效果(AlphaAnimation) 有两种方法 第一种在活动中设置,不需要xml文件 public ...
- Apache rewrite地址重写
Apache-rewrite+13个经典案例Apache 重写规则的常见应用(rewrite)一:目的 如何用Apache重写规则来解决一些常见的URL重写方法的问题,通过常见的 实例给用户一些使用重 ...
- Star sky CodeForces - 835C
用一个三维数组cnt[x][y][k]表示从(1, 1)到(x, y)亮度为k的个数,然后查询的时候就是对于每一个亮度,计算出这个亮度t秒后的亮度和当前这个亮度的个数,答案就是他们的乘积, 然后遍历每 ...
- #509. 「LibreOJ NOI Round #1」动态几何问题
下面给出部分分做法和满分做法 有一些奇妙的方法可以拿到同样多的分数,本蒟蒻只能介绍几种常见的做法 如果您想拿18分左右,需要了解:质因数分解 如果您想拿30分左右,需要了解:一种较快的筛法 如果您想拿 ...
- 2017蓝桥杯 省赛C题(承压计算)
X星球的高科技实验室中整齐地堆放着某批珍贵金属原料. 每块金属原料的外形.尺寸完全一致,但重量不同.金属材料被严格地堆放成金字塔形. 7 5 8 7 8 8 9 2 7 2 8 1 4 9 1 8 1 ...
- BZOJ 1042: [HAOI2008]硬币购物 (详解)(背包&容斥原理)
题面:https://www.cnblogs.com/fu3638/p/6759919.html 硬币购物一共有4种硬币.面值分别为c1,c2,c3,c4.某人去商店买东西,去了tot次.每次带di枚 ...