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

三步輕松集成Swagger API文檔

開發 開發工具
相信大家平時開發的過程中,都會使用到 API文檔工具吧?大家都在使用什么呀?Java docs,I/O Docs, apiary.io, Docco, Dexy, Doxygen, TurnAPI,Swagger。

本文轉載自微信公眾號「Java技術指北」,作者指北君 。轉載本文請聯系Java技術指北公眾號。

大家好, 我是指北君。

相信大家平時開發的過程中,都會使用到 API文檔工具吧?大家都在使用什么呀?Java docs,I/O Docs, apiary.io, Docco, Dexy, Doxygen, TurnAPI,Swagger。今天我就來教大家如何使用 Swagger 搭建 API 文檔,并且配置權限使用。畢竟開發文檔還是內容使用的為好,萬一上線到生產環境,沒有關swagger 又沒有設置權限,那可不GG啦。

好,我們這就上手搞起來。

我們將使用 Springfox 對 Swagger 2 規范的實現,并通過 JWT 的方式來設置權限。

配置SwaggerUI

第一步:向Spring Boot項目添加Maven依賴項

打開 pom.xml 文件,添加 springfox-boot-starter 到 maven 依賴中。

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

添加 springfox-boot-starter 依賴后,spring boot 能啟動配置功能,配置好 swagger,所以我們不需要手動添加注解來啟用 Swagger。

我們啟動一下項目訪問 Swagger 文檔的 JSON API , 來看看 Springfox 是否正常運行。我們可以在瀏覽器中輸入以下URL:

http://localhost:8080/v3/api-docs

能夠看到以上的類似結果,說明我們第一步已經成功了。

第二步:將 Swagger 2 集成到 Spring Boot項目中去

我們創建一個 SwaggerConfig 類,并用 @Configuration 注解來注釋。Swagger 的配置主要圍繞著 Docket 對象來完成。我們可以在 SwaggerConfig 類中添加以下代碼。

@Configuration
public class SwaggerConfiguration {
private ApiInfo apiInfo() {
return new ApiInfo("Blog REST APIs",
"REST APIs for Blog Application",
"1.0",
"Terms of service",
new Contact("xxx", "xxx", "xxx"),
"License of API",
"API license URL",
Collections.emptyList());
}
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
}

在構造 Docket 對象之后,它的 select() 方法返回了 ApiSelectorBuilder 的一個實例,它提供了一種控制 Swagger 所暴露的端點的方法。

我們可以通過使用 RequestHandlerSelectors 和 PathSelectors 配置選擇 RequestHandlers 的路徑。如果兩者兩者使用 any() , 那就說明配置所有的 API 都能在 Swagger 上顯示了。

第三步:訪問 Swagger UI

Swagger UI 是一個內置的解決方案,使用戶與Swagger 生成的API文檔的交互變得更加容易。我們在瀏覽器中輸入下面URL即可查看:

http://localhost:8080/swagger-ui/

結果應該是這樣的。

好,到這里 Swagger 的使用配置就算結束了。那接下來我們來看看怎么用JWT增加權限配置呢?

配置 JWT

JWT 是什么?相信大家都一定聽過吧,它就是 JSON Web Token 的縮寫。話不多說,直接上手代碼配置起來。在 SwaggerConfig 里面新增代碼。

我們先來配置 ApiKey 作為 JWT 的認證 header信息:

   public static final String AUTHORIZATION_HEADER = "Authorization";
private ApiKey apiKey(){
return new ApiKey("JWT", AUTHORIZATION_HEADER, "header");
}

下一步,我們配置 JWT 的 SecurityContext , 對 SecurityContext 配置全局的 AuthorizationScope :

   private SecurityContext securityContext(){
return SecurityContext.builder().securityReferences(defaultAuth()).build();
}
private List<SecurityReference> defaultAuth(){
AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
authorizationScopes[0] = authorizationScope;
return Arrays.asList(new SecurityReference("JWT", authorizationScopes));
}

然后我們配置 Docket 對象,對 Docket 對象設置 SecurityContext ,SecuritySchemes。

   @Bean
public Docket api(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.securityContexts(Arrays.asList(securityContext()))
.securitySchemes(Arrays.asList(apiKey()))
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}

到這里,JWT 就配置完成了,感覺是不是挺簡單的?好,我們再來運行一下,看看效果

我們點擊右上角的 Authorize 按鈕,彈出一個輸入 apiKey 的彈出層。

輸入 api key 之后,點擊 Authorize 認證通過,我們就又能調用 API 接口調試了。

用注解定制 Swagger API 文檔

為了能夠定制 Swagger 文檔,swagger-core 提供了一套注解來聲明和操作輸出。

Swagger-core 注解:

Name

Description

@Api

標記為 Swagger 資源

@ApiModel

標記為 Swagger 模型

@ApiModelProperty

模型字段的屬性說明

@ApiOperation

http接口的說明

@ApiParam

http 接口參數說明

更多詳細的說明可以參考 GitHub 上的解釋:https://github.com/swagger-api/swagger-core/wiki/annotations

現在我們就舉個例子來解釋怎么使用這些個注解, 首先來看 @Api 和 @ApiOperation 怎么使用:

@Api(value = "CRUD Rest APIs for Post resources")
@RestController
@RequestMapping()
public class PostController {
@ApiOperation(value = "Get All Posts REST API")
@GetMapping("/api/v1/posts")
public PostResponse getAllPosts(
@RequestParam(value = "pageNo", defaultValue = "0", required = false) int pageNo,
@RequestParam(value = "pageSize", defaultValue = "100", required = false) int pageSize
){
...
}

}

再來看看 @ApiModel 和 @ApiModelProperty 怎么使用:

@ApiModel(description = "Post model information")
@Data
public class PostDto {
@ApiModelProperty(value = "Blog post id")
private long id;
}

是不是感覺 so easy?

總結

通過這篇文章我們學習了如何通過 Springfox 來搭建 Swagger API 文檔平臺,然后也學會了如何設置 JWT 的方式做認證,保證 API 不會被別人能夠惡意使用。


責任編輯:武曉燕 來源: Java技術指北
相關推薦

2011-07-13 09:54:22

VMware故障vSphere

2020-11-04 00:00:29

Kerberos協議身份

2009-10-12 13:41:00

RHEL 內核

2010-08-12 10:10:37

FlexMapABC

2009-02-10 09:36:00

局域網網速測試

2023-09-25 15:34:14

2015-06-09 09:25:34

2009-04-11 21:56:01

安全技術防火墻VPN

2015-01-28 16:09:33

廣域網優化

2009-02-03 09:48:00

DHCP服務器安全

2021-03-02 07:02:45

Linux操作系統

2010-05-24 13:00:49

2012-01-13 11:13:47

數據中心耗電量

2009-02-04 09:45:05

Java SocketSocket APIJava編程

2012-08-08 17:05:36

App運營

2022-03-10 15:11:46

分布式數據管理鴻蒙

2021-01-22 05:38:28

監控SpringbootActuator

2012-05-25 10:18:23

響應式

2016-02-17 14:37:47

云遷移云退出戰略

2021-09-04 23:27:58

Axios源碼流程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91免费福利视频 | 国产精品99久久久久 | 日韩精品视频在线 | 国产精品国产a级 | 老头搡老女人毛片视频在线看 | 日本三级电影在线观看视频 | 很黄很污的网站 | 视频二区 | 成人二区 | 免费成人在线网站 | 日韩欧美一区二区三区免费观看 | 色www精品视频在线观看 | 色嗨嗨 | 日本一区不卡 | 欧美在线日韩 | 黑人巨大精品欧美一区二区免费 | 欧美第一页 | 亚洲一区精品在线 | 国产福利精品一区 | 在线视频一区二区 | 久久国产精品一区二区 | 国产精品久久久久久久久久久免费看 | 成人免费共享视频 | 日韩三级免费网站 | 日韩毛片免费视频 | 国产精品久久二区 | 91在线视频观看 | 99精品久久 | 一区中文字幕 | 亚洲一区中文 | 亚洲精品一区二区久 | 国产一级大片 | 在线不卡av | 亚洲国产精品一区二区三区 | 二区中文 | 欧美video | 中文区中文字幕免费看 | 99免费在线观看视频 | 四虎成人av | 欧美精品一区二区三区在线播放 | 欧美性a视频 |