- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Spring Boot整合Swagger测试api构建全纪录由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
什么是swagger?
swagger是什么:the world's most popular api tooling 。
根据官网的介绍:
swagger inspector:测试api和生成openapi的开发工具。swagger inspector的建立是为了解决开发者的三个主要目标.
我的理解swagger是一个规范和完整的框架,用于生成、描述、调用和可视化restful风格的web服务。简单来说,swagger是一个功能强大的接口管理工具,并且提供了多种编程语言的前后端分离解决方案。根据我的使用,当然我只是最简单的使用,我感觉swagger有以下几个优点:
swagger可以整合到代码中,在开发时通过注解,编写注释,自动生成api文档。 将前端后台分开,不会有过分的依赖.
界面清晰,无论是editor的实时展示还是ui的展示都十分人性化,如果自己仅仅用markdown来编写,又要纠结该如何展现,十分痛苦.
构建项目 。
step1.导入依赖 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
<!--swagger服务api构建个性包-->
<dependency>
<groupid>io.springfox</groupid>
<artifactid>springfox-swagger2</artifactid>
<version>
2.6
.
1
</version>
</dependency>
<!--swagger ui界面-->
<dependency>
<groupid>io.springfox</groupid>
<artifactid>springfox-swagger-ui</artifactid>
<version>
2.6
.
1
</version>
</dependency>
<!--springboot web服务-->
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-web</artifactid>
</dependency>
<!--springboot单元测试-->
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-test</artifactid>
<scope>test</scope>
</dependency>
|
step2.编写swagger配置类 。
想要使用swagger功能必须提供配置类,主要配置ui界面信息,以及配置扫描位置,swagger会根据配置的路径扫描所有的服务生成api.
其中核心requesthandlerselectors.basepackage("com.simple.spring.boot.controller"),在这里配置我们的需要的扫描包位置.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
@configuration
@enableswagger2
public
class
swaggerconfig {
@bean
public
docket createrestapi() {
return
new
docket(documentationtype.swagger_2).apiinfo(apiinfo())
.select()
.apis(requesthandlerselectors.basepackage(
"com.simple.spring.boot.controller"
))
.paths(pathselectors.any()).build();
}
private
apiinfo apiinfo() {
return
new
apiinfobuilder()
.title(
"spring boot中使用swagger2构建restful apis"
)
.description(
"myapp"
)
.termsofserviceurl(
"http://blog.csdn.net/simplewu"
)
.version(
"1.0"
).build();
}
}
|
step3.编写springboot启动类 。
@componentscan(basepackages={"com.simple.spring.boot.controller"}) 也是需要配置扫描路径.
1
2
3
4
5
6
7
|
@springbootapplication
@componentscan
(basepackages={
"com.simple.spring.boot.controller"
})
public
class
swaggerapplication {
public
static
void
main(string[] args) {
springapplication.run(swaggerapplication.
class
, args);
}
}
|
step4.创建前端控制器 。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
@restcontroller
@api
(tags =
"swgger测试服务"
, description =
"swgger测试服务"
)
@requestmapping
(value =
"/simple/wu"
)
public
class
testcontroller {
@apioperation
(value=
"测试post方法"
, notes=
"测试post方法"
)
@apiimplicitparam
(name =
"令牌"
, value =
"id"
, required =
true
, datatype =
"token"
)
@requestmapping
(value=
"hello"
, method=requestmethod.post)
public
string post(
@requestbody
string token) {
books.put(book.getid(), book);
return
"success"
;
}
}
|
@api(tags = "swgger测试服务", description = "swgger测试服务")
指定某个类提供服务的名字@apioperation(value="测试post方法", notes="测试post方法")
指定某个请求的名字@apiimplicitparam(name = "令牌", value = "token", required = true, datatype = "string")
指定名字对应参数为令牌,以及对应参数字段token,required = true代表这个参数为必填参数,datatype 代表数据类型。step5.启动服务 。
从上面的代码中我们指定请求为post在ui界面上我们会看到一个服务名字为swgger测试服务的大类点击进去后可以看到里面所拥有的请求,如果指定这个请求的类型那么无法进行单元测试,指定后我们会看到一个请求名字叫做测试post方法的请求并且需要填入必填参数token来完成我们的单元测试.
我们可以直接通过swaggerapplication类来运行main方法来进行服务,端口号默认为8080. 。
swagger地址:http://localhost:8080/swagger-ui.html 只需要在地址后面加上swagger-ui.html即可访问 。
我们访问这个位置即可看到ui界面,界面简洁并且容易上手,我这边就不截图了.
step.总结 。
swagger官方文档:https://www.baeldung.com/swagger-2-documentation-for-spring-rest-api 。
swagger的一个最大的优点是能实时同步api与文档.
在项目开发过程中,发生过多次:修改代码但是没有更新文档,前端还是按照老旧的文档进行开发,在联调过程中才发现问题的情况(当然依据开闭原则,对接口的修改是不允许的,但是在项目不稳定阶段,这种情况很难避免).
总结 。
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我的支持.
原文链接:https://www.cnblogs.com/SimpleWu/archive/2019/01/12/10261140.html 。
最后此篇关于Spring Boot整合Swagger测试api构建全纪录的文章就讲到这里了,如果你想了解更多关于Spring Boot整合Swagger测试api构建全纪录的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我已经设置了 Azure API 管理服务,并在自定义域上配置了它。在 Azure 门户中 API 管理服务的配置部分下,我设置了以下内容: 因为这是一个客户端系统,我必须屏蔽细节,但以下是基础知识:
我是一名习惯 React Native 的新程序员。我最近开始学习 Fetch API 及其工作原理。我的问题是,我找不到人们使用 API key 在他们的获取语句中访问信息的示例(我很难清楚地表达有
这里有很多关于 API 是什么的东西,但是我找不到我需要的关于插件 API 和类库 API 之间的区别。反正我不明白。 在 Documenting APIs 一书中,我读到:插件 API 和类库 AP
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
我正在尝试找出设计以下场景的最佳方法。 假设我已经有了一个 REST API 实现,它将从不同的供应商那里获取书籍并将它们返回给我自己的客户端。 每个供应商都提供单独的 API 来向其消费者提供图书。
请有人向我解释如何使用 api key 以及它有什么用处。 我对此进行了很多搜索,但得到了不同且相互矛盾的答案。有人说 API key 是保密的,它从不作为通信的一部分发送,而其他人则将它发送给客户端
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 4年前关闭。 Improve this
谁能告诉我为什么 WSo2 API 管理器不进行身份验证?我已经设置了两个 WSo2 API Manager 1.8.0 实例并创建了一个 api。它作为原型(prototype) api 工作正常。
我在学习 DSL 的过程中遇到了 Fluent API。 我在流利的 API 上搜索了很多……我可以得出的基本结论是,流利的 API 使用方法链来使代码流利。 但我无法理解——在面向对象的语言中,我们
基本上,我感兴趣的是在多个区域设置 WSO2 API 管理器;例如亚洲、美国和欧洲。一些 API 将部署在每个区域的数据中心内,而其他 API 将仅部署在特定区域内。 理想情况下,我想要的是一个单一的
我正在构建自己的 API,供以下用户使用: 1) 安卓应用 2) 桌面应用 我的网址之一是:http://api.chatapp.info/order_api/files/getbeers.php我的
我需要向所有用户显示我的站点的分析,但使用 OAuth 它显示为登录用户配置的站点的分析。如何使用嵌入 API 实现仪表板但仅显示我的网站分析? 我能想到的最好的可能性是使用 API key 而不是客
我正在研究大公司如何管理其公共(public) API。我想到的是拥有成熟 API 的公司,例如 Google、Facebook、Twitter 和 Amazon。 这些公司向公众公开了许多不同的 A
在定义客户可访问的 API 时,以下是首选的行业惯例: a) 定义一组显式 API 方法,每个方法都有非常狭窄和特定的目的,例如: SetUserName SetUserAge Se
这在本地 deserver 和部署时都会发生。我成功地能够通过留言簿教程使用 API 资源管理器,但现在我已经创建了自己的项目并尝试访问我编写的第一个 API,它从未出现过。搜索栏旁边的黄色“正在加载
我正在尝试使用 http://ip-api.com/ api通过我的ip地址获取经度和纬度。当我访问 http://ip-api.com/json从我的浏览器或使用 curl,它以 json 格式返回
这里的典型示例是 Twitter 的 API。我从概念上理解 REST API 的工作原理,本质上它只是针对您的特定请求向他们的服务器查询,然后您会在其中收到响应(JSON、XML 等),很棒。 但是
我能想到的最好的标题,但要澄清的是,情况是这样的: 我正在开发一种类似短 url 的服务,该服务允许用户使用他们的 Twitter 帐户“登录”并发布内容。现在这项服务可以包含在 Tweetdeck
我正在设计用于管理评论和讨论线程的 API 方案。我想有一个点 /discussions/:discussionId 当您GET 时,它会返回一组评论和一些元数据。评论也许可以单独访问 /discus
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭去年。 Improve this quest
我是一名优秀的程序员,十分优秀!