如何使用簡單程式碼列出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:簡單使用EhCache快取框架Spring Boot快取框架
- Spring Boot + DD小程式 超級簡單的webscoketSpring BootWeb
- Spring Boot 中使用Caffeine快取的簡單例子Spring Boot快取單例
- Spring Boot使用Allatori程式碼混淆Spring Boot
- Spring Boot 之路(一):一個簡單的Spring Boot應用Spring Boot
- Spring Boot與Kafka + kafdrop結合使用的簡單示例Spring BootKafka
- Spring Boot 簡單整合 LiquibaseSpring BootUI
- Spring Boot 整合 Lombok 讓程式碼更簡潔Spring BootLombok
- 如何使用Spring Boot的ProfilesSpring Boot
- Spring Boot系列十六 WebSocket簡介和spring boot整合簡單訊息代理Spring BootWeb
- _004_SpringBoot_使用eclipse工具搭建一個簡單的Spring bootSpring BootEclipse
- Spring Boot入門系列(二十六)超級簡單!Spring Data JPA 的使用!Spring Boot
- Spring Boot+Spring Security+Thymeleaf 簡單教程Spring Boot
- Spring Boot 2中actuator和H2資料庫別名暴露遠端執行程式碼漏洞 — spaceraccoon.devSpring Boot資料庫行程dev
- 如何使用簡單的終端命令更新macOSMac
- Spring Boot乾貨系列:(十二)Spring Boot使用單元測試Spring Boot
- Spring Boot使用Mybatis-plus和它的程式碼生成器Spring BootMyBatis
- 簡單地聊一聊Spring Boot的構架Spring Boot
- Spring Boot實際專案用簡單的AOPSpring Boot
- RabbitMQ(三):RabbitMQ與Spring Boot簡單整合MQSpring Boot
- Kubernetes與Spring Boot簡單HelloWorld教程 - MarounSpring Boot
- 如何在spring boot 使用 gitlab的ApiSpring BootGitlabAPI
- 簡單演示Excel中VBA程式碼的使用Excel
- Spring Boot 最簡單整合 Shiro+JWT 方式Spring BootJWT
- centos(linux): 列出所有的開機自啟動程式CentOSLinux
- 使用Spring的註釋和反射讓程式碼更精簡Spring反射
- spring boot 版本由 2 升級到 3 ,需要修改程式碼嗎? 也就是說spring boot 3 是否相容 spring boot 2 所寫的程式碼Spring Boot
- Spring MVC 到 Spring Boot 的簡化之路MVCSpring Boot
- 1-Spring 簡單使用Spring
- Spring Data JPA簡單使用Spring
- Spring Cloud + Spring Boot企業架構之CAS SSO單點登入服務端環境搭建CloudSpring Boot架構服務端
- CAS SSO單點登入客戶端環境搭建之Spring Cloud + Spring Boot 企業架構客戶端CloudSpring Boot架構
- Spring Cloud + Spring Boot 企業架構之CAS SSO單點登入客戶端環境搭建CloudSpring Boot架構客戶端
- 使用 Spring Boot 進行單元測試Spring Boot
- 微服務架構專案實戰:Spring Boot 如何建立簡單的 REST 服務微服務架構Spring BootREST
- Spring框架系列(2) - Spring簡單例子引入Spring要點Spring框架單例
- 使用 Kotlin + Spring Boot 進行後端開發KotlinSpring Boot後端