一、项目目标
动静分离的架构,即客户端和服务器端的分离,客户端可以是IOS、android或者静态的页面。需要服务器端提供webservice服务,并且为了方便编写api接口文档,所以引入了swagger。
二、技术选型
为什么使用jersey而不用spring mvc
虽然spring-web提供了REST的功能,但是没有实现JAX-RS的标准。
二、maven配置
<properties>
<jetty.version>8.1.16.v20140903</jetty.version>
<jersey.version>2.9</jersey.version>
<spring.version>4.0.1.RELEASE</spring.version>
</properties>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-jersey2-jaxrs</artifactId
<version>1.5.9</version>
<exclusions>
<exclusion>
<groupId>javax.ws.rs</groupId>
<artifactId>jsr311-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>${jersey.version}</version>
</dependency>
<!-- jersey-spring -->
<dependency>
<groupId>org.glassfish.jersey.ext</groupId>
<artifactId>jersey-spring3</artifactId>
<version>${jersey.version}</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</exclusion>
</exclusions>
</dependency>
还需要引入spring的包,作者使用的是4.0.1.RELEASE
三、swagger的操作
3.1swagger ui 准备
下载地址:https://github.com/swagger-api/swagger-ui
swagger其实就是一套静态页面,自定义了一套api的json格式,通过解析json将api展现出来。
下载之后将静态页面放在webapp目录下即可,还需要改一下index.html中的url地址,改成本地的api接口地址即可。
3.2注册
注册swagger,即将swagger的rest服务注册到jersey中。
register(io.swagger.jaxrs.listing.ApiListingResource.class);
register(io.swagger.jaxrs.listing.AcceptHeaderApiListingResource.class);
register(io.swagger.jaxrs.listing.SwaggerSerializers.class);
四、swagger集成过程中遇到的坑
4.1 jackson中报类型找不到,class java.lang.String
解决方法:更新jackson包
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>2.7.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-base</artifactId>
<version>2.7.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.7.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-joda</artifactId>
<version>2.7.4</version>
</dependency>
4.2 swagger-ui.js中报的错误
4.2.1 operation is null, 大概在2338行
operation = path[method];
[b]if (operation === null) continue;[/b]
var sharedParameters = path.parameters || [];
var parameters = operation.parameters || [];
for (i in sharedParameters) {
var parameter = sharedParameters[i];
parameters.unshift(parameter);
}
if(method !== 'parameters' && _.isObject(operation)) {
operation.parameters = operation.parameters || parameters;
}
4.2.2 enumValues is null, 大概在4383行
if ([b]enumValues != null &&[/b] typeof enumValues !== 'undefined') {
var id;
param.allowableValues = {};
param.allowableValues.values = [];
param.allowableValues.descriptiveValues = [];
for (id = 0; id < enumValues.length; id++) {
var value = enumValues[id];
var isDefault = (value === param.default || value+'' === param.default);
param.allowableValues.values.push(value);
// Always have string for descriptive values....
param.allowableValues.descriptiveValues.push({value : value+'', isDefault: isDefault});
}
最终结果
- 大小: 24.9 KB
分享到:
相关推荐
下面小编就为大家带来一篇基于Rest的API解决方案(jersey与swagger集成)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Swagger-UI更倾向于在线测试接口和数据,但其核心是一个javascript插件,只要稍作修改,便能按需求定制出不同格式的说明文档,在github上更是基于它集成到各种语言环境,分支众多。 其官方提供了一个离线版本,它...
球衣演示Jersey-Swagger集成您需要完成四个步骤,才能使用Swagger设置球衣应用程序: 创建基于Maven的Jersey2.0 Java EE Web应用程序mvn原型:generate -DarchetypeArtifactId = jersey-quickstart-webapp -...
Java+SpringMvc+mybatis+RestAPI架构,整合swagger,对外公开服务
asp.net webapi集成swagger自动生成接口文档(亲测可用)swagger生成html离线接口文档swagger生成html离线接口文档
Swagger是一种与技术无关的标准,允许发现REST API,为任何软件提供了一种识别REST API功能的方法。 这比看起来更重要:这是一个改变游戏技术的方式,就像Web服务描述语言一样WSDL(Web Service Description ...
Java+Springboot+mybatis+RestAPI架构,整合swagger,对外公开服务
swagger-rest-api-文档 Swagger REST API文档示例 源代码
API,没有招摇Swagger 分支包含 Swagger 集成如何查看此示例 API 文档- git checkout swagger - rake db:create - rake db:migrate - rails s - http://localhost:3000/docs 您可以通过 swagger 接口与 api(CRUD ...
REST API Development with Node.js: Manage and Understand the Full Capabilities of Successful REST Development Manage and understand the full capabilities of successful REST development. REST API ...
为了避免这项手动工作,我们开发了API2Swagger工具,可通过调用REST服务自动生成Swagger JSON。 特征! 使用构建器进行Swagger JSON生成 使用命令行实用程序生成Swagger JSON 从JSON响应数据生成JSON模式 使用新...
使用 swagger-ui 将 Jersey 用于 REST API + 端点文档 安装 git clone https://github.com/salvitas/JerseySwagger.git cd JerseySwagger mvn clean install mvn jetty:run 网址 示例方法测试: Swagger-ui 文档...
如何集成Spring Boot,Jersey,Swagger来构建基于JSON的真实世界的RESTful Web服务 在开始之前 我们必须将Spring Boot Starter Web作为Swagger UI的依赖项才能正常工作。 运行Web服务 curl -X POST“ ” -H“接受:...
图书管理系统apiswagger集成
注意:如果您正在寻找swagger core 1.5.x和openapi 2.0,请参考1.5分支。
Swagger是一个规范和完整的...在项目开发中,根据业务代码自动生成API文档,给前端提供在线测试,自动显示JSON格式,方便了后端与前端的沟通与调试成本。 Swagger有一个缺点就是侵入性模式,必须配置在具体的代码里。
为你的Flask API提供毫不费力的Swagger UI
大纲 • 由应用安全说起 • 传统REST API安全测试 • 基于Swagger的REST API 的安全测试
用于从Swagger文件中模拟REST API的有用数据的CLI
tornado-rest-swagger:龙卷风服务器的Swagger API文档构建器。 受软件包的启发(基于此软件包的来源)。 文献资料 代码 问题 Python版本 python2.7和Python 3.5及更高版本 Swagger语言规范 安装 pip install -...