成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Spring Boot 整合 Swagger3 指南

開發
Swagger 雖然升級了,但是我們在 Spring Boot 中卻依然可以使用老版本的 Swagger,今天我們就來看看,在 Spring Boot2.7.1 中如何使用 Swagger3。

Swagger 好早之前就更新到 3 了,不過一直沒空和小伙伴們分享下具體玩法,主要是也是因為 Swagger 雖然升級了,但是我們在 Spring Boot 中卻依然可以使用老版本的 Swagger,不過好像是從 Spring Boot2.6 開始,你會發現用不了老版本的 Swagger 了,哎,反正遲早都得搞,那不如就今天吧!

今天我們就來看看,在 Spring Boot2.7.1 中如何使用 Swagger3。

1. 依賴

首先我們創建一個 Spring Boot 項目,引入 Swagger3 依賴,如下:

<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>

以前在 Swagger2 的時代,這個依賴我們需要引入兩個,現在就只需要這一個即可。

2. 配置

接下來在啟動類上添加兩個注解,開啟 Swagger:

@SpringBootApplication
//開啟swagger
@EnableSwagger2
@EnableOpenApi
@EnableWebMvc
public class SwaggerDemoApplication {

public static void main(String[] args) {
SpringApplication.run(SwaggerDemoApplication.class, args);
}

}

現在,基本工作就已經完成了,此時即使我們不做任何額外的事情,Swagger 文檔也已經可以自動生成了。

啟動項目,瀏覽器輸入 http://localhost:8080/swagger-ui/index.html 查看 Swagger 文檔。

小伙伴們需要注意,這個默認的文檔訪問路徑跟以前的 Swagger2 不一樣哦!

現在掃描出來的接口中有一個是 BasicErrorController,這個是 Spring Boot 默認提供的異常處理器,因為我們現在沒有為 Swagger 設置包掃描路徑,所以就連同這個一起被掃描出來了。

好了,現在我們可以對這個網頁稍微做一些定制,如下:

@Configuration
public class Swagger2Config {

@Bean
Docket docket() {
return new Docket(DocumentationType.OAS_30)
//配置網站的基本信息
.apiInfo(new ApiInfoBuilder()
//網站標題
.title("TienChin項目在線接口文檔")
//標題后面的版本號
.version("v1.0")
.description("TienChin項目接口文檔")
//聯系人信息
.contact(new Contact("javaboy", "http://www.javaboy.org", "111@qq.com"))
.build())
.select()
//指定接口的位置
.apis(RequestHandlerSelectors.basePackage("org.javaboy.swagger_demo.controller"))
.build();
}
}

這段配置基本上和之前的 Swagger2 的一致,配置完成后,Swagger 頁面的基本信息就會更新過來。

3. 接口配置

接下來就是一些具體的接口配置了。

這個和 Swagger2 也基本一致,而且很容易懂,下面我來分別向小伙伴們舉例說明:

@RestController
@Api(tags = "用戶管理相關接口")
@RequestMapping("/user")
public class UserController {
@PostMapping("/")
@ApiOperation("添加用戶的接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "username", value = "用戶名", defaultValue = "李四"),
@ApiImplicitParam(name = "address", value = "用戶地址", defaultValue = "深圳", required = true)
})
public RespBean addUser(String username, @RequestParam(required = true) String address) {
return new RespBean();
}
@GetMapping("/")
@ApiOperation("根據id查詢用戶的接口")
@ApiImplicitParam(name = "id", value = "用戶id", defaultValue = "99", required = true)
public User getUserById(@PathVariable Integer id) {
User user = new User();
user.setId(id);
return user;
}
@PutMapping("/{id}")
@ApiOperation("根據id更新用戶的接口")
public User updateUserById(@RequestBody User user) {
return user;
}
}

這里邊涉及到多個 API,我來向小伙伴們分別說明:

  • @Api 注解可以用來標記當前 Controller 的功能。
  • @ApiOperation 注解用來標記一個方法的作用。
  • @ApiImplicitParam 注解用來描述一個參數,可以配置參數的中文含義,也可以給參數設置默認值,這樣在接口測試的時候可以避免手動輸入。
  • 如果有多個參數,則需要使用多個 @ApiImplicitParam 注解來描述,多個 @ApiImplicitParam 注解需要放在一個 @ApiImplicitParams 注解中。
  • 需要注意的是,@ApiImplicitParam 注解中雖然可以指定參數是必填的,但是卻不能代替 @RequestParam(required = true) ,前者的必填只是在 Swagger 框架內必填,拋棄了 Swagger ,這個限制就沒用了,所以假如開發者需要指定一個參數必填, @RequestParam(required = true) 注解還是不能省略。
  • 如果參數是一個對象(例如上文的更新接口),對于參數的描述也可以放在實體類中。例如下面一段代碼:
@ApiModel
public class User {
@ApiModelProperty(value = "用戶id")
private Integer id;
@ApiModelProperty(value = "用戶名")
private String username;
@ApiModelProperty(value = "用戶地址")
private String address;
//getter/setter
}

好了,經過如上配置之后,接下來,刷新剛剛打開的頁面,可以看到如下效果:

圖片

可以看到,所有的接口這里都列出來了,包括接口請求方式,接口地址以及接口的名字等,點開一個接口,可以看到如下信息:

圖片

可以看到,接口的參數,參數要求,參數默認值等等統統都展示出來了,參數類型下的 query 表示參數以 key/value 的形式傳遞,點擊右上角的 Try it out,就可以進行接口測試:

圖片

點擊 Execute 按鈕,表示發送請求進行測試。測試結果會展示在下面的 Response 中。

小伙伴們注意,參數類型下面的 query 表示參數以 key/value 的形式傳遞,這里的值也可能是 body,body 表示參數以請求體的方式傳遞,例如上文的更新接口,如下:

圖片

當然還有一種可能就是這里的參數為 path,表示參數放在路徑中傳遞,例如根據 id 查詢用戶的接口:

圖片

當然,除了這些之外,還有一些響應值的注解,都比較簡單,小伙伴可以自己摸索下。

4. 在 Security 中的配置

如果我們的 Spring Boot 項目中集成了 Spring Security,那么如果不做額外配置,Swagger 文檔可能會被攔截,此時只需要在 Spring Security 的配置類中為 Swagger 相關的文件和接口放行即可(SpringBoot2.7.1 最新寫法):

@Configuration
public class SecurityConfig {
@Bean
WebSecurityCustomizer webSecurityCustomizer() {
return new WebSecurityCustomizer() {
@Override
public void customize(WebSecurity web) {
web.ignoring().antMatchers("/swagger-ui/**")
.antMatchers("/swagger-resources/**")
.antMatchers("/v3/**");
}
};
}
}

如此之后,Swagger 文件就不需要認證就能訪問了。不知道小伙伴們有沒有看懂呢?

責任編輯:趙寧寧 來源: 江南一點雨
相關推薦

2024-11-05 09:25:45

2025-07-02 07:33:02

Spring倒排索引分布式

2025-05-09 07:20:02

Spring數據庫檢索

2021-05-07 20:27:14

SpringBootSwagger3文檔

2021-04-13 07:29:13

Swagger3接口Postman

2022-12-23 08:28:42

策略模式算法

2022-06-28 15:04:32

容器Docker

2022-06-28 15:06:35

容器Spring

2017-10-17 15:14:33

Spring BooThymeleafWeb

2017-04-17 10:35:40

Spring BooRedis 操作

2022-03-07 09:00:00

HTTPS證書中間件

2021-09-03 06:46:34

Spring 6pring Boot 項目

2021-09-15 09:02:20

Spring 6Spring BootJava

2022-07-27 10:39:14

Spring代碼IDEA

2025-06-27 02:44:00

2024-03-26 08:08:08

SpringBPMN模型

2022-05-06 10:42:09

JavaFlowable引擎

2020-06-24 09:35:50

SpringSpring BooJava

2020-07-02 15:40:11

Spring BootJar包Java

2024-10-15 09:34:57

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品视频久久久 | 成人午夜毛片 | 欧美福利一区 | 亚洲国产成人久久综合一区,久久久国产99 | 日本三级在线视频 | 国产福利在线 | 欧美成人精品一区二区男人看 | 国产一级片网站 | 欧美日韩国产一区二区三区 | 日本精品一区二区三区在线观看 | 欧美成人一区二区三区 | 九九伦理电影 | 日韩资源 | av毛片| 亚洲天堂av网 | 色婷婷亚洲国产女人的天堂 | 91在线免费视频 | 国产99久久久国产精品 | 在线观看国产wwwa级羞羞视频 | 综合婷婷 | av在线播放国产 | 色五月激情五月 | 国产精品久久久久久久毛片 | 国产精品色婷婷久久58 | 99热这里有精品 | 一级高清视频 | 亚洲精品免费看 | 有码在线| 在线视频 亚洲 | 成人精品国产免费网站 | 久久精品国产免费高清 | 99国产视频| 精品中文字幕视频 | 久久久久久免费看 | 久久久青草婷婷精品综合日韩 | 欧美国产日韩在线观看成人 | 欧美成人精品欧美一级 | 久久夜色精品国产 | 色天天综合| 欧美久久一级特黄毛片 | 在线观看欧美一区 |