cpj-swagger分别整合struts2、spring mvc、servlet
cpj-swagger
原文地址:https://github.com/3cpj/swagger
1. Swagger是什么?
官方说法:Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。
个人觉得,swagger的一个最大的优点是能实时同步api与文档。在项目开发过程中,发生过多次:修改代码但是没有更新文档,前端还是按照老旧的文档进行开发,在联调过程中才发现问题的情况(当然依据开闭原则,对接口的修改是不允许的,但是在项目不稳定阶段,这种情况很难避免)。
cpj-swagger
通过与swagger ui
一起快速为您的web项目产生接口文档,并且支持在线测试接口。cpj-swagger
可以很方便的与struts2
、spring mvc
、servlet
集成使用,下面的教程将详细说明如何使用cpj-swagger。
目录
一. 加入依赖JAR文件
二. 配置
三. 标注你的接口
四. 访问接口文档
五. 核心API
六. 示例程序下载
一. 加入依赖JAR文件
- maven:
<dependency><groupId>com.github.3cpj</groupId><artifactId>cpj-swagger</artifactId><version>1.2.1</version> </dependency>
二. 配置
1. 选择使用方式
您可以通过三种方式来使用cpj-swagger
。
- 与strut2集成
如果您的web项目是基于strut2
的,您可以在您的strut2配置文件中加入如下代码来快速集成cpj-swagger
:
<constant name="struts.enable.DynamicMethodInvocation" value="true" /><constant name="struts.devMode" value="true" /><package name="api" namespace="/api" extends="struts-default" ><action name="*" class="com.cpj.swagger.support.struts2.ApiAction" method="{0}"></action></package>
- 与spring mvc集成
如果您的web项目是基于spring mvc
的,您可以在您的spring mvc配置文件中加入如下代码来快速集成cpj-swagger
:
<context:component-scan base-package="com.cpj.swagger.support.springmvc"><context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/></context:component-scan>
- 与servlet集成
如果您的web项目是基于servlet
的,您可以在您的web.xml配置文件中加入如下代码来快速集成cpj-swagger
:
<servlet><servlet-name>apiServlet</servlet-name><servlet-class>com.cpj.swagger.support.servlet.ApiServlet</servlet-class> </servlet> <servlet-mapping><servlet-name>apiServlet</servlet-name><url-pattern>/api/*</url-pattern> </servlet-mapping>
2. 修改配置项
您需要在项目的源文件目录下添加一个swagger.properties
文件,并加入以下配置项:
packageToScan=com.cpj.swagger.action apiDescription=Swagger Demo apiTitle=Swagger Demo apiVersion=1.0.0 teamOfService=www.cpj.com devMode=true
cpj-swagger
的配置信息都必须写在swagger.properties
文件里面。具体的配置项及其说明如下:
键 | 说明 |
---|---|
apiFile | 扫描生成json文件的存放路径 |
packageToScan | 扫描的包 |
apiDescription | 接口文档描述 |
apiTitle | 接口文档标题 |
apiVersion | 接口版本 |
teamOfService | 服务团队 |
apiHost | 接口主机地址 |
apiBasePath | 接口基路径 |
devMode | 是否启用开发模式,如果开启则每次获取接口文档的时候都会扫描类 |
suffix | 接口请求地址后缀,如.action |
三. 标注你的接口
接下来需要用cpj-swagger提供的注解来标明你的接口,下面以spring mvc为例来说明如何标注接口,其他方式请参考示例程序
。
@Controller @APIs("/demo") @RequestMapping("/demo") public class DemoController {@API(value="login", summary="示例1", parameters={@Param(name="username", description="用户名", type="string"),@Param(name="password", description="密码", type="string", format="password"),@Param(name="image" , description="图片", type="file", format="binary")})@RequestMapping(value="login", method=RequestMethod.POST)public void login(HttpServletResponse response, String username, String password, MultipartFile image)throws Exception {response.setContentType("application/json;charset=utf-8");JSONWriter writer = new JSONWriter(response.getWriter());Map<String, String> user = new HashMap<String, String>();user.put("username", username);user.put("password", password);writer.writeObject(user);writer.flush();writer.close();} }
四. 访问接口文档
在完成前面的工作之后,您可以部署好您的web项目,然后在浏览器输入以下地址就可以访问接口文档了:http://127.0.0.1:8080/您的项目名/api/index
五. 核心API
1. 注解 @com.cpj.swagger.annotation.APIs
该注解放在一个类上面,用来表明类中包含作为HTTP接口的方法(被注解@com.cpj.swagger.annotation.API
标注了的方法)。 该注解的value
用来设置接口的前缀,这和struts2
的命名空间很像。使用示例如下:
@APIs("/demo") public class DemoController {}
2. 注解 @com.cpj.swagger.annotation.API
该注解放在一个方法上面,用来表明方法是HTTP接口方法,注解的属性说明如下:
value
与注解@com.cpj.swagger.annotation.APIs
的value
属性一起来指定接口的地址,例如有如下设置:
@APIs("/demo") public class DemoController {@API(value="login"})public void login()} }
那么login
方法对应的接口地址为: youhost/demo/login
parameters
用来指定接口的请求参数,详情参见注解Param
的说明。
summary
接口功能简述。
description
接口功能详细说明。
method
请求方式,默认是POST。
consumes
允许的请求MIME,比如:multipart/form-data、application/xml、application/json默认是application/json; charset=utf-8。
特别说明:
当为 multipart/form-data
时,Param
的in
属性必须为formData
,但是in
为path、header时Param
不用遵循此规则。
3. 注解 @com.cpj.swagger.annotation.Param
用来说明请求参数,例如:
@API(value="login", summary="示例1", parameters={@Param(name="username", description="用户名", type="string"),@Param(name="password", description="密码", type="string", format="password")}) @RequestMapping(value="login", method=RequestMethod.POST) public void login(HttpServletResponse response, String username, String password) throws Exception { }
这表明该接口需要两个请求参数,及username
、password
。 注解@com.cpj.swagger.annotation.Param
的属性说明如下:
name
参数名
in
输入参数类型,可取如下值:
- query - 参数拼接到url中
- body - 参数直接放入请求体中
- path - restful风格的参数传递
- header - 参数放在请求头中
- formData - 参数通过form表单提交
特别说明:
- 当前请求方式为POST的时候,默认值为formData
- 请求方式为非POST的时候,默认值为query
type
数据类型, 与format
一起指定请求参数的数据类型。 type
和 format
的可选值如下:
通用名 |
type
|
format
|
备注 |
---|---|---|---|
integer |
integer
|
int32
|
signed 32 bits |
long |
integer
|
int64
|
signed 64 bits |
float |
number
|
float
|
|
double |
number
|
double
|
|
string |
string
|
||
byte |
string
|
byte
|
base64 encoded characters |
binary |
string
|
binary
|
any sequence of octets |
boolean |
boolean
|
||
date |
string
|
date
|
As defined by full-date - RFC3339
|
dateTime |
string
|
date-time
|
As defined by date-time - RFC3339
|
password |
string
|
password
|
Used to hint UIs the input needs to be obscured. |
format
数据格式,type
一起指定请求参数的数据类型。
description
参数说明
required
是否是必须参数, 默认是false
六. 示例程序下载
spring mvc
struts2
servlet
七. 与struts2
整合项目演示
进入git命令行,输入命令下载代码
git clone https://github.com/3cpj/swagger-demo-struts2.git
然后进入项目文件夹内
cd swagger-demo-struts2/
把项目转成eclipse项目
mvn eclipse:eclipse
导入eclipse之后发布项目到tomcat,然后启动项目,访问地址:http://localhost:8080/swagger-demo-struts2/api/index
运行效果:
整个接口的参数一目了然。
转载于:https://www.cnblogs.com/jiafuwei/p/6252632.html
cpj-swagger分别整合struts2、spring mvc、servlet相关推荐
- server.servlet.contextPath 和 spring.mvc.servlet.path 对比
@RestController @RequestMapping("/v1") class Controller {} 更通用的方法 spring.mvc.servlet.path= ...
- 使用IDEA整合spring4+spring mvc+hibernate
配置文件 spring-mvc.xml 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans ...
- SSH之IDEA2017整合Struts2+Spring+Hibernate
摘要 IDEA无疑是Java编程的利器,在下面我们将介绍如何使用IDEA来整合SSH(Struts2 + Spring + Hibernate):介绍將分为三个部分来讲,分别是新建工程,Spring引 ...
- Spring MVC Servlet XML文件配置
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://ww ...
- eclipse 环境下整合 struts2+spring+hibernate 开发web应用常见问题及解答
索引 1. org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned b ...
- Spring MVC和Struts2
Web层面的框架学习了三个Struts1和2,SpringMVC,那他们之间肯定存在一个优劣和适用的环境,Struts1和2的异同点我已经做过对比<Struts1和Struts2>,这篇将 ...
- Spring Spring MVC Hibernate 整合备忘
以下为此三种框架整合配置的详细备注,以及部分问题备忘 项目结构和配置文件可访问 Github 查看 1. pom.xml 尽量使用 Maven 管理项目依赖以减少包引入时的麻烦,以及避免跨开发工具问题 ...
- Java框架搭建-Maven、Mybatis、Spring MVC整合搭建
Java框架搭建-Maven.Mybatis.Spring MVC整合搭建 1. 下载eclipse 到网站下载 http://www.eclipse.org/downloads/packages/e ...
- Spring、Mybatis、Spring MVC整合实例
Spring.Mybatis.Spring MVC整合实例笔记 源码地址:https://gitee.com/name168/SSM_Demo 1.Maven web项目创建(IDEA) 2.SSM整 ...
- SSM框架超级详细整合记录:Spring+Spring MVC+MyBatis+Maven+MySQL
1.前言 本文主要对SSM框架整合的过程进行记录,作为之后参考的依据. 1.1.参考文章 Spring代码实例系列-绪论 Spring MVC代码实例系列-绪论 MyBatis代码实例系列-绪论 1. ...
最新文章
- UpdateProgress使用
- 使用NTDSXtract离线抓取Domain Hash
- java常用集合类详解(有例子,集合类糊涂的来看!)
- JS原生 实现图片懒加载
- Flume整合SparkStreaming出现UnsupportedClassVersionError: org/apache/spark/streaming/flume/sink/SparkFlum
- Elasticsearch —— bulk批量导入数据
- camera(25)----拍照显示总结---名词解释
- C++继承机制(三)——多继承、菱形继承、虚继承原理
- 11.2.0.3 MRP进程异常终止 ORA-00600 krr_assemble_cv_3
- printf()语句
- matlab经验分布函数 教程,经验分布函数.ppt
- Silktest试用笔记
- 数据库系统概论中国人民大学MOOC第一章数据库系统知识点总结(2) 层次结构- 网状结构-关系结构数据的完整性约束条件单向链接 双向链接 环状链接 向首链接
- 4个工具,个个都是精品!修复图片视频画质超好用
- echarts 多条折线时数量由多到少更新数据时残留问题
- SQL SERVER 事务的使用(tran)
- 【给小白玩的脚本】自动发歌词、发弹幕
- 算法初探 之 排序算法
- .Net Core 编码规范
- 爬取网易云音乐某一个人的评论
热门文章
- FreeMarker的基础操作
- 北漂7年,我最终还是回了老家。。。
- 根据IP获取城市-新浪ip接口
- PCB学习笔记——如何改变图纸大小
- 2022-01-05:有四种诗的韵律分别为: AABB、ABAB、ABBA、AAAA。 比如 : 1 1 3 3就属于AABB型的韵律、
- html成绩百分制转换为,设计一个程序,将从键盘上输入的百分制成绩转换成对应的五分制成绩并输出。90分以上为A,80~90分为B,...
- 华为起诉Verizon侵权在美开庭,涉及光传输网络
- 电路原理计算机解法,电路原理学习指导与习题全解
- 华为云 —— 购买与登录弹性云服务器ECS
- 浙江农林大学第二十一届程序设计竞赛校选拔赛A E G H