如何使用簡單程式碼列出Spring Boot暴露的所有端點? - Zanini
讓我們看看如何定義一個自定義API,以返回使用Spring Boot應用程式公開的所有端點的列表。
在網上尋找在Spring Boot應用程式中檢索所有已部署端點的方法時,我發現存在RequestMappingHandlerMapping。
Spring Boot使用此類來執行每個帶有註釋的方法,@RequestMapping 幷包含所有方法的列表,尤其是應用程式所有公開的端點的列表。
這就是為什麼實現這樣的API比您想象的要容易的原因。這可以通過以下方式實現:
@RestController @RequestMapping("/monitoring/") public class MonitoringController { @Autowired private RequestMappingHandlerMapping requestMappingHandlerMapping; @GetMapping("endpoints") public ResponseEntity<List<String>> getEndpoints() { return new ResponseEntity<>( requestMappingHandlerMapping .getHandlerMethods() .keySet() .stream() .map(RequestMappingInfo::toString) .collect(Collectors.toList()), HttpStatus.OK ); } } |
Kotlin:
@RestController @RequestMapping("/monitoring/") class MonitoringController { @Autowired private lateinit var requestMappingHandlerMapping : RequestMappingHandlerMapping @GetMapping("endpoints") fun getEndpoints() : ResponseEntity<List<String>> { return ResponseEntity( requestMappingHandlerMapping .handlerMethods .map { it.key.toString() }, HttpStatus.OK ) } } |
在這兩種情況下,我都使用handlerMethods屬性,該屬性儲存具有所有對映和HandlerMethod的只讀對映。對映是條目的鍵,並由RequestMappingInfo物件表示。他們的toString()方法返回到達與HandlerMethod物件關聯的端點所需的全部資訊。
這是此API響應示例:
[ “ {GET / monitoring / endpoints}”, “ {GET / v1 / genres}”, “ {GET / v1 / genres / {id}}”, “ {POST / dex / v1 / genres}”, “ {PUT / v1 / genres / {id}}”, “ {DELETE / v1 / genres / {id}}”, “ {PATCH / v1 / genres / {id}}”, “ {GET / v1 / books}”, “ {GET / v1 / books / {id}}”, “ {POST / dex / v1 / books}”, “ {PUT / v1 / books / {id}}”, “ {Delete / v1 / books / {id} }”, “ {PATCH / v1 / books / {id}}”, “ {GET / v1 / authors}”, “ {GET / v1 / authors / {id}}”, “ {POST / dex / v1 / authors }“, ”{PUT / v1 / authors / {id}}”, “ {DELETE / v1 / authors / {id}}”, “ {PATCH / v1 / authors / {id}}”, “ {GET / v1 / authors / {id} / books}” ] |
相關文章
- 使用程式碼列出金庸小說中使用過的所有成語
- Spring Boot—— Thymeleaf (gradle) 的簡單使用Spring BootGradle
- Spring Boot:簡單使用EhCache快取框架Spring Boot快取框架
- Spring Boot + DD小程式 超級簡單的webscoketSpring BootWeb
- Spring Boot 中使用Caffeine快取的簡單例子Spring Boot快取單例
- Spring Boot使用Allatori程式碼混淆Spring Boot
- Spring Boot與Kafka + kafdrop結合使用的簡單示例Spring BootKafka
- Spring Boot 之路(一):一個簡單的Spring Boot應用Spring Boot
- 如何使用Spring Boot的ProfilesSpring Boot
- Spring Boot 整合 Lombok 讓程式碼更簡潔Spring BootLombok
- Spring Boot 簡單整合 LiquibaseSpring BootUI
- 一個簡單的spring-boot例子Springboot
- 如何使用簡單的終端命令更新macOSMac
- Spring Boot系列十六 WebSocket簡介和spring boot整合簡單訊息代理Spring BootWeb
- 使用Gradle建立一個最簡單的Spring Boot專案GradleSpring Boot
- 重拾後端之Spring Boot(一):REST API的搭建可以這樣簡單後端Spring BootRESTAPI
- Spring Boot入門系列(二十六)超級簡單!Spring Data JPA 的使用!Spring Boot
- Spring Boot+Spring Security+Thymeleaf 簡單教程Spring Boot
- Spring Boot 2中actuator和H2資料庫別名暴露遠端執行程式碼漏洞 — spaceraccoon.devSpring Boot資料庫行程dev
- 3.3. 列出所有functionFunction
- Spring Boot實際專案用簡單的AOPSpring Boot
- 簡單地聊一聊Spring Boot的構架Spring Boot
- RabbitMQ(三):RabbitMQ與Spring Boot簡單整合MQSpring Boot
- Spring Boot乾貨系列:(十二)Spring Boot使用單元測試Spring Boot
- Spring Boot(五):Spring Boot Jpa 的使用Spring Boot
- Spring Boot使用Mybatis-plus和它的程式碼生成器Spring BootMyBatis
- 3行程式碼列出硬碟上所有檔案及資料夾行程硬碟
- 如何在spring boot 使用 gitlab的ApiSpring BootGitlabAPI
- Spring Boot(六):如何優雅的使用 MybatisSpring BootMyBatis
- 簡單演示Excel中VBA程式碼的使用Excel
- 玩轉spring boot——簡單登入認證Spring Boot
- Spring Boot(十一):Spring Boot 中 MongoDB 的使用Spring BootMongoDB
- Spring Boot(三):Spring Boot 中 Redis 的使用Spring BootRedis
- _004_SpringBoot_使用eclipse工具搭建一個簡單的Spring bootSpring BootEclipse
- 微服務架構專案實戰:Spring Boot 如何建立簡單的 REST 服務微服務架構Spring BootREST
- Spring Cloud + Spring Boot企業架構之CAS SSO單點登入服務端環境搭建CloudSpring Boot架構服務端
- CAS SSO單點登入客戶端環境搭建之Spring Cloud + Spring Boot 企業架構客戶端CloudSpring Boot架構
- Spring Cloud + Spring Boot 企業架構之CAS SSO單點登入客戶端環境搭建CloudSpring Boot架構客戶端