Spring Boot配置Swagger的實(shí)現(xiàn)代碼
由于Spring Boot能夠快速開(kāi)發(fā)、便捷部署等特性,相信有很大一部分Spring Boot的用戶會(huì)用來(lái)構(gòu)建RESTful API。而我們構(gòu)建RESTful API的目的通常都是由于多終端的原因,這些終端會(huì)共用很多底層業(yè)務(wù)邏輯,因此我們會(huì)抽象出這樣一層來(lái)同時(shí)服務(wù)于多個(gè)移動(dòng)端或者Web前端。
Swagger Inspector:測(cè)試API和生成OpenAPI的開(kāi)發(fā)工具。Swagger Inspector的建立是為了解決開(kāi)發(fā)者的三個(gè)主要目標(biāo)。
- 執(zhí)行簡(jiǎn)單的API測(cè)試
- 生成OpenAPI文檔
- 探索新的API功能
下面來(lái)具體介紹,如果在Spring Boot中使用Swagger2。
添加Swagger2依賴
在pom.xml中加入Swagger2的依賴
<!-- Swagger API-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.2.2</version>
</dependency>
創(chuàng)建Swagger2配置類
在HrabbitAdminApplication.java子包下創(chuàng)建Swagger2的配置類Swagger2。
通過(guò)@Configuration注解,讓Spring來(lái)加載該類配置。再通過(guò)@EnableSwagger2注解來(lái)啟用Swagger2。
再通過(guò)createRestApi函數(shù)創(chuàng)建Docket的Bean之后,apiInfo()用來(lái)創(chuàng)建該Api的基本信息(這些基本信息會(huì)展現(xiàn)在文檔頁(yè)面中)。select()函數(shù)返回一個(gè)ApiSelectorBuilder實(shí)例用來(lái)控制哪些接口暴露給Swagger來(lái)展現(xiàn),包含注解的方式來(lái)確定要顯示的接口,當(dāng)然也可以通過(guò)包掃描的方式來(lái)確定要顯示的包的接口。
/**
* 配置Swagger
*
* @Auther: hrabbit
* @Date: 2018-12-17 6:43 PM
* @Description:
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) //這里采用包含注解的方式來(lái)確定要顯示的接口
//.apis(RequestHandlerSelectors.basePackage("com.hrabbit.admin.modual.system.controller")) //這里采用包掃描的方式來(lái)確定要顯示的接口
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("Hrabbit-Admin Doc")
.description("Guns Api文檔")
.termsOfServiceUrl("https://gitee.com/hrabbit/hrabbit-admin")
.contact("hrabbit")
.version("1.0")
.build();
}
}
添加文檔內(nèi)容
我們通過(guò)@Api說(shuō)明Controller,@ApiOperation注解來(lái)給API增加說(shuō)明、通過(guò)@ApiImplicitParams、@ApiImplicitParam注解來(lái)給參數(shù)增加說(shuō)明。
/**
* 系統(tǒng)用戶
*
* @Auther: hrabbit
* @Date: 2018-12-17 6:21 PM
* @Description:
*/
@Controller
@RequestMapping("user")
@Api(value = "系統(tǒng)用戶")
public class SysUserController {
@Autowired
private SysUserService sysUserService;
/**
* 根據(jù)id獲取用戶信息
*
* @return
*/
@RequestMapping("/",method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value = "進(jìn)入到主頁(yè)")
public Object index() {
return sysUserService.selectById(1L);
}
/**
* 創(chuàng)建用戶信息
*
* @param user
* @return
*/
@ApiOperation(value = "創(chuàng)建用戶", notes = "根據(jù)SysUser對(duì)象創(chuàng)建用戶")
@ApiImplicitParam(name = "user", value = "用戶詳細(xì)實(shí)體user", required = true, dataType = "SysUser")
@RequestMapping(value = "", method = RequestMethod.POST)
public String postUser(@RequestBody SysUser user) {
return "success";
}
/**
* 修改用戶信息
*
* @param id
* @param user
* @return
*/
@ApiOperation(value = "更新用戶詳細(xì)信息", notes = "根據(jù)id更新系統(tǒng)用戶")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "用戶ID", required = true, dataType = "Long"),
@ApiImplicitParam(name = "user", value = "用戶詳細(xì)實(shí)體sysUser", required = true, dataType = "SysUser")
})
@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
public String putUser(@PathVariable Long id, @RequestBody SysUser user) {
return "success";
}
}
完成上述代碼添加上,啟動(dòng)Spring Boot程序,訪問(wèn):http://localhost:8080/swagger-ui.html
。就能看到前文所展示的RESTful API的頁(yè)面。我們可以再點(diǎn)開(kāi)具體的API請(qǐng)求,以POST類型的/user請(qǐng)求為例,可找到上述代碼中我們配置的Notes信息以及參數(shù)user的描述信息,如下圖所示。

API文檔訪問(wèn)與調(diào)試
在上圖請(qǐng)求的頁(yè)面中,我們看到user的Value是個(gè)輸入框?是的,Swagger除了查看接口功能外,還提供了調(diào)試測(cè)試功能,我們可以點(diǎn)擊上圖中右側(cè)的Model Schema(黃色區(qū)域:它指明了User的數(shù)據(jù)結(jié)構(gòu)),此時(shí)Value中就有了user對(duì)象的模板,我們只需要稍適修改,點(diǎn)擊下方“Try it out!”按鈕,即可完成了一次請(qǐng)求調(diào)用!
本篇文章,一些文字內(nèi)容借鑒了程序猿DD的Swagger內(nèi)容,該系列文章內(nèi)容主要以如何搭建一個(gè)完整的后臺(tái)Spirng Boot Cli為主,其他的基礎(chǔ)信息可以參考其他博主內(nèi)容!
碼云地址:https://gitee.com/hrabbit/hrabbit-admin
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Spring Data JPA 之 JpaRepository的使用
這篇文章主要介紹了Spring Data JPA 之 JpaRepository的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02
SpringBoot如何導(dǎo)出Jar包并測(cè)試(使用IDEA)
這篇文章主要介紹了SpringBoot如何導(dǎo)出Jar包并測(cè)試(使用IDEA),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07
SpringBoot+ruoyi框架文件上傳和下載的實(shí)現(xiàn)
文件的上傳和下載功能,是項(xiàng)目開(kāi)發(fā)過(guò)程中比較常見(jiàn)的業(yè)務(wù)需求,本文主要介紹了SpringBoot+ruoyi框架文件上傳和文件下載的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09
Java代碼執(zhí)行shell命令的實(shí)現(xiàn)
這篇文章主要介紹了Java代碼執(zhí)行shell命令的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
去掉IntelliJ IDEA 中 mybatis 對(duì)應(yīng)的 xml 文件警告的教程圖解
本文通過(guò)圖文并茂的形式給大家介紹了去掉IntelliJ IDEA 中 mybatis 對(duì)應(yīng)的 xml 文件警告的教程,需要的朋友可以參考下2018-06-06
Java如何取掉json數(shù)據(jù)中值為null的屬性字段
這篇文章主要介紹了Java如何取掉json數(shù)據(jù)中值為null的屬性字段,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03

