javascript
使用Spring Boot自动发布和监视API
如果您正在沿著微服務風格的架構前進,那么您將需要接受的一個租戶就是自動化。 這種架構風格介紹了許多活動部件。 如果成功,您的環境將具有大量服務API,企業可以將其用于應用程序開發和集成。
這意味著必須有一種方法可以發現可用的API文檔。 需要在整個企業范圍內有效地傳達API信息,以顯示使用API??的位置,使用API??的頻率以及更改API的時間。 如果沒有這種類型的監視,將阻礙甚至可能削弱微服務風格的體系結構可以為企業帶來的敏捷性收益。
Pivotal的Spring Boot引領了以敏捷且最少的編碼方式開發基于微服務,云就緒應用程序的途徑。 如果您想了解有關Spring Boot的更多信息,請查看Matt McCandless撰寫的此博客 。 使用Spring Boot為服務實現RESTful API不需要太多的工作。 而且,將該服務置于微服務基礎架構中也不需要太多工作。 (有關更多信息,請參見我們最新的白皮書 。)
該博客將介紹如何將Swagger / OpenAPI文檔應用于Spring Boot實現。 我們將展示如何自動將API文檔和監視發布到API文檔門戶。
作為示例,我們介紹了一個參考Spring Boot API CRUD應用程序(將Spring MVC / Data與Spring Fox一起使用),并將API文檔和統計信息自動發布到文檔門戶GrokOla。 在示例中,我們引入了兩個開源實用程序來幫助并允許已發布的API能夠搜索并在更改時通知用戶。
使用Spring Fox在Spring Boot中配置Swagger
OpenAPI(fka Swagger)是API文檔規范,它允許從代碼實現中收集RESTful API。 可以說,這比必須在單獨的步驟中記錄API更為有效。
Spring Fox是一個框架,可以自動從Spring Boot應用程序生成Swagger JSON文檔。 要了解從Spring Boot應用程序生成Swagger JSON文檔有多么容易,請考慮這個簡單的Employee API Service應用程序,該應用程序為員工實現了CRUD API。
可以在以下公共github存儲庫中找到員工CRUD API的實現: https : //github.com/in-the-keyhole/khs-spring-boot-api-example 。
該示例應用程序使用Spring MVC實現了以下API。 Spring Data使用為內存數據庫配置的Hibernate映射到Employee對象模型。
啟動后,可以使用下面顯示的部分khs.exmaple.api.Api Spring REST控制器實現中定義的以下API創建,讀取,更新和刪除Employee對象。
@RestController @RequestMapping("/api") public class Api {@AutowiredEmployeeService service;@RequestMapping(method = RequestMethod.GET, value = "/employees/{id}", produces = MediaType.APPLICATION_JSON_VALUE)ResponseEntity<Employee> employee(@PathVariable("id") Long id) {Employee employee = service.findEmployee(id);return new ResponseEntity<Employee>(employee, HttpStatus.OK);}@ApiOperation("value")@RequestMapping(method = RequestMethod.GET, value = "/employees", produces = MediaType.APPLICATION_JSON_VALUE)ResponseEntity<Iterable<Employee>> employees() {Iterable<Employee> employees = service.all();return new ResponseEntity<Iterable<Employee>>(employees, HttpStatus.OK);}……..可以使用Spring Fox框架生成Swagger文檔。 這是將其應用于示例應用程序的方式。
將Spring Fox / Swagger Maven依賴項添加到您的項目中。
<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.6.1</version> </dependency>然后在SwaggerConfig.java類中定義Spring Fox配置以及@EnableSwagger2批注。
@Configuration @EnableSwagger2 public class SwaggerConfig {@Beanpublic Docket apiDocket() {return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select().paths(regex("/api.*")).build();}private ApiInfo apiInfo() {return new ApiInfoBuilder().title("Employee API Example").description("A implementation of an API Gateway for Keyhole Labs Microservice Reference.").contact(new Contact("Keyhole Software", "keyholesoftware.com", "asktheteam@keyholesoftware.com")).version("2.0").build();} }配置完成并啟動應用程序后,可以使用以下URL獲得Swagger JSON文檔: http : //127.0.0.1 : 8080/v2/api-docs 。
自動化API發布
使Swagger API JSON供團隊使用,以消耗成功所必需的東西,尤其是在您試圖消除阻礙敏捷性的孤島并創建具有跨職能團隊的組織(即“顛倒” Conway'法)的情況下。
Swagger框架可以生成人類可讀HTML Swagger文檔,但是它不可索引/不可搜索,無法與其他API聚合,并且不允許添加其他文檔。 需要更好的機制。
理想情況下,這將是一個開發人員API門戶,它將匯總組織的可用API,為可搜索性編制索引API,允許開發人員輕松添加其他文檔以及在API更改時提供使用指標和通知。
自動化此步驟對于接受和提供價值至關重要。 我們在Keyhole Software的開發人員已經創建了一個開源Spring Boot啟動程序框架,該框架將在每次啟動應用程序時將Swagger發布到門戶。
@PublishSwagger
啟用S??pring Fox / Swagger后,可以通過以下步驟應用https://github.com/in-the-keyhole/khs-spring-boot-publish-swagger-starter入門框架。
將以下依賴項添加到pom.xml 。
<dependency><groupId>com.keyholesoftware</groupId> <artifactId>khs-spring-boot-publish-swagger-starter</artifactId> <version>1.0.0</version> </dependency>將以下屬性添加到application.yml文件中:
swagger:publish:publish-url: https://demo.grokola.com/swagger/publish/14security-token: 6e8f1cc6-3c53-4ebe-b496-53f19fb7e10eswagger-url: http://127.0.0.1:${server.port}/v2/api-docs注意:此配置指向GrokOla演示API Wiki門戶。
將@PublishSwagger批注添加到您的Spring Boot startup類中。
@SpringBootApplication @PublishSwagger public class EmployeesApp {public static void main(String[] args) {SpringApplication.run(EmployeesApp.class, args);} }啟動應用程序后,Swagger JSON將發布到指定的publish-url 。 在這種情況下,它是Keyhole的GrokOla API Wiki門戶軟件的演示站點。
這是GrokOla中導入的API:
GrokOla是一個Wiki,它允許以無頭的自動化方式手動導入API。 該博客顯示了如何使用Spring Boot輕松發布API。 但是,使用GrokOla,您也可以手動導入Swagger API。
您可以通過此鏈接獲取演示用戶ID。 該博客中的示例已經配置為指向該演示站點。 因此,如果您有想法,可以使用API?? Wiki門戶。
@EnableApiStats
僅擁有隨時可用的API文檔不足以管理您的API。 了解誰,如何以及何時使用它們至關重要。 您可以使用一些工具和嗅探器來路由和過濾網絡活動,但這是一個單獨的軟件,部署到必須由操作人員而非開發人員配置的位置。
已經為Spring Boot開發人員創建了一種更為簡潔和易于應用的機制,以獲取并向門戶發布各個應用程序API使用情況統計信息,以進行分析。 這已實現為另一個可在GitHub上使用的Spring Boot啟動程序(公共,開源)框架: https : //github.com/in-the-keyhole/khs-spring-boot-api-statistics-starter 。
此解決方案通過以下三個簡單步驟應用。
將以下依賴項添加到POM.XML 。
<dependency><groupId>com.keyholesoftware</groupId><artifactId>khs-spring-boot-api-statistics-starter</artifactId><version>1.0.1</version> </dependency>將以下配置添加到application.yml 。 這將向GrokOla演示實例發出API的統計信息。
api:statistics:name: employeeapipattern-match: /api/.*publish-url: https://demo.grokola.com/sherpa/api/stats/41token: 6e8f1cc6-3c53-4ebe-b496-53f19fb7e10e將@EnableApiStatistics添加到您的應用程序boot main class實現中。
@SpringBootApplication @PublishSwagger @EnableApiStatistics public class EmployeesApp {public static void main(String[] args) {SpringApplication.run(EmployeesApp.class, args);} }當應用程序啟動時,針對API的每十次請求后,收集到的使用情況統計信息將被發送到publish-url 。 發送到URL之前的請求數是可配置的。 這是在單獨的線程上完成的,以免影響性能。
這是十個API請求后示例應用程序的控制臺:
注意,API JSON被發送到已發布的U??RL。
GrokOla已準備好接受發出的API JSON流,并通過將API使用情況與已發布相關聯來向用戶提供使用情況統計信息。 可從GrokOla的API文檔部分進行訪問。 此API統計信息視圖的屏幕截圖如下所示。
“ Usage視圖顯示API路由類型計數總持續時間和平均持續時間。 這使開發人員可以確定使用其API的時間和時間。 您還可以查看受歡迎程度以及使用API??的時間和地點。
最后的想法
以無縫方式自動發布API文檔,并提供一種監視其使用行為的方法,對于成功實現基于服務的平臺至關重要。
具有自動化的API發布和監視功能將增強微服務架構風格,并為企業帶來敏捷性。 可用的API文檔應該易于發現,并且在整個企業中有效地傳達信息,從而決定使用API??的位置,使用頻率的API以及更改API的時間。
我們已經發布了兩個開源工具,可以幫助實現這一目標:
- Spring Boot Starter,用于在每次啟動應用程序時將Swagger / OpenAPI發布到門戶。
- https://github.com/in-the-keyhole/khs-spring-boot-publish-swagger-starter
- Spring Boot Starter,用于將各個應用程序API使用情況統計信息發布到門戶以進行分析。
- https://github.com/in-the-keyhole/khs-spring-boot-api-statistics-starter
希望對您有所幫助!
翻譯自: https://www.javacodegeeks.com/2017/03/auto-publishing-monitoring-apis-spring-boot.html
總結
以上是生活随笔為你收集整理的使用Spring Boot自动发布和监视API的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 狗狗电脑桌面高清壁纸图片(电脑壁纸狗狗高
- 下一篇: rest spring_带有Spring