摘要:請注意,截至目前版本,用于的集成仍處于孵化階段,并且存在一些嚴重的錯誤和缺少的功能例如,請參閱此處和此處。響應可以使用和注解來調整不同的響應狀態及其有效結論允許您在創建數據庫驅動的時產生快速結果。
原文: Documenting a Spring Data REST API with Springfox and Swagger
使用Spring Date REST,你可以迅速為Spring Date repositories的創建REST API,并提供CRUD和更多功能。然而,在嚴謹的API開發過成功,您還希望擁有自動生成的最新API文檔。
Code Example本文附帶了工作示例代碼[github]()
Swagger提供了一個用于記錄REST API的規范。通過使用Springfox,我們有一個工具可以作為Spring應用程序和Swagger之間的橋梁,為某些Spring bean和注釋創建一個Swagger文檔。
Springfox最近還添加了一個為Spring Data REST API創建Swagger文檔的功能。 這個功能還在孵化,但是我仍然玩了一下,以評估它是否可以在真實項目中使用。 因為如果是這樣,Spring Data REST和Springfox的結合將允許快速開發一個記錄良好的REST API。
請注意,截至目前(版本2.7.0),用于Spring Data REST的Springfox集成仍處于孵化階段,并且存在一些嚴重的錯誤和缺少的功能(例如,請參閱此處和此處)。 因此,下面的說明和代碼示例基于當前的2.7.1-SNAPSHOT版本,其中可以大大改進。
在Spring Boot / Spring Data REST應用程序中啟用Springfox為了使Springfox能夠為我們的Spring Data REST API創建一個Swagger文檔,您必須執行以下步驟。
添加Springfox依賴將以下依賴項添加到您的應用程序(gradle)中:
compile("io.springfox:springfox-swagger2:2.7.0") compile("io.springfox:springfox-data-rest:2.7.0") compile("io.springfox:springfox-swagger-ui:2.7.0")
springfox-swagger2包含Springfox的核心功能,允許使用Swagger 2創建API文檔。
springfox-data-rest包含為Spring Data REST存儲庫自動創建Swagger文檔的集成。
springfox-swagger-ui包含Swagger UI,它在http:// localhost:8080 / swagger-ui.html中顯示Swagger文檔
配置Application按下面的方法配置Spring Boot Application:
@SpringBootApplication @EnableSwagger2 @Import(SpringDataRestConfiguration.class) public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
@EnableSwagger2注解通過在Spring應用程序上下文中注冊某些bean來啟用Swagger 2支持。
@Import注釋將額外的類導入到Spring應用程序上下文中,這些需要從Spring Data REST存儲庫自動創建Swagger文檔。
創建Docket bean你可以選擇創建一個Docket類型的Spring bean。 這將被Springfox拿起來配置一些swagger文檔輸出。
@Configuration public class SpringfoxConfiguration { @Bean public Docket docket() { return new Docket(DocumentationType.SWAGGER_2) .tags(...) .apiInfo(...) ... } }Spring Data repositories添加注解
另外可選地,您可以使用@Api,@ApiOperation和@ApiParam注釋來注釋由Spring Data REST公開的Spring Data存儲庫。 以下更多細節。
輸出最后,通過訪問瀏覽器中的http:// localhost:8080 / swagger-ui.html,您應該能夠查看Spring Data REST API的Swagger文檔。 結果應該如下圖所示。
自定義輸出上圖中的數字顯示了一些可以自定義生成的API文檔中的東西的地方。 以下各節介紹了我認為重要的一些定制。 你可以定制超過我發現的東西,所以隨時添加評論,如果你發現我錯過的東西!
通用的API信息像標題,描述,許可等信息可以通過創建一個 Docket bean來配置,如上面的代碼片段,并使用其setter來更改所需的設置。
Repository描述可以通過創建一個名稱與默認API名稱完全相同的標記(示例中的“地址實體”)來更改存儲庫的描述,并向 Docket 對象中的此標記提供描述,并使用 @Api 將該標記庫與該標記庫相連接 注解。 到目前為止,我找不到修改存儲庫名稱的方法。
@Configuration public class SpringfoxConfiguration { @Bean public Docket docket() { return new Docket(DocumentationType.SWAGGER_2) .tags(new Tag("Address Entity", "Repository for Address entities")); } } @Api(tags = "Address Entity") @RepositoryRestResource(path = "addresses") public interface AddressRepository extends CrudRepository { // methods omitted }方法描述
對單個API操作的描述可以通過 @ApiOperation 注釋來修改,如下所示:
public interface AddressRepository extends PagingAndSortingRepository { @ApiOperation("find all Addresses that are associated with a given Customer") Page findByCustomerId(@Param("customerId") Long customerId, Pageable pageable); }輸入參數
輸入參數的名稱和描述可以使用 @ApiParam 注釋進行配置。 請注意,從Springfox 2.7.1開始,參數名稱也從Spring Data提供的 @Param 注釋中讀取。
public interface AddressRepository extends PagingAndSortingRepository { Page findByCustomerId(@Param("customerId") @ApiParam(value="ID of the customer") Long customerId, Pageable pageable); }響應
可以使用 @ApiResponses 和 @ApiResponse 注解來調整不同的響應狀態及其有效payload:
public interface AddressRepository extends PagingAndSortingRepository { @Override @ApiResponses({@ApiResponse(code=201, message="Created", response=Address.class)}) Address save(Address address); }結論
Spring Data REST允許您在創建數據庫驅動的REST API時產生快速結果。 Springfox允許您快速生成該API的自動文檔。但是,由Springfox生成的API文檔與每個細節中的實際API都不匹配。一些手動微調和注釋是必要的,如上面的定制部分所述。
一個這樣的例子是,示例請求和響應的JSON在每種情況下都不能正確地呈現,因為Spring Data REST使用HAL格式,Springfox僅在少數情況下使用。通過手動工作,API文檔很難保持每個細節的最新狀態。
我的結論是,Spring Data REST和Springfox的結合是一個很好的起點,可以快速生成一個REST API,它的文檔對于大多數用例來說足夠好,特別是當API是在一組封閉的開發人員中開發和使用的時候。對于公共API,細節更重要一點,讓Swagger注釋和Springfox配置保持最新的每個細節可能令人沮喪。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/68791.html
摘要:集成生成接口文檔原文簡介由于的特性,用來開發變得非常容易,并且結合來自動生成文檔變得方便快捷。使用生成,我們可以得到交互式文檔。聽過與的結合,生成更加完備的文檔。接下來將基于與搭建完整的文檔系統。 Spring Boot Swagger2 集成REST ful API 生成接口文檔 原文 簡介 由于Spring Boot 的特性,用來開發 REST ful 變得非常容易,并且結合 Sw...
摘要:另外的解決方案網上還有另外一種說法,可以實現接口,代碼如下用于添加攔截規則,先把所有路徑都加入攔截,再一個個排除自定義規則,如果遇到,則把泛型類轉成通用服務易保科技但是這種配置想要生效,必須加注解,不然不起作用。 最近同事問我,spring boot集成了swagger,但是在使用攔截器的時候遇到了問題,頁面無法訪問。經過研究解決了這個問題。 配置問題解決 集成swagger就不啰嗦了...
摘要:導讀在團隊協作的時候許多時候需要用到接口文檔,我們通常通過手工編寫大量重復格式的文檔,讓我想起了程序員最討厭的兩件事沒有文檔,編寫文檔。對應的資料可自行谷歌。關于和官網是這樣描述的。我們可以理解為為基于構建的自動生成文檔。 導讀: 在團隊協作的時候許多時候需要用到接口文檔,我們通常通過手工編寫大量重復格式的文檔,讓我想起了程序員最討厭的兩件事:沒有文檔,編寫文檔。哈哈,如果使用過swa...
摘要:今天給你們帶來集成的教程。接口返回結果不明確。這些痛點在前后端分離的大型項目上顯得尤為煩躁。接口返回結果非常明確,包括數據類型,狀態碼,錯誤信息等。生成后的文件依賴如下這里使用的是的版本。另外,關注之后在發送可領取免費學習資料。 微信公眾號:一個優秀的廢人如有問題或建議,請后臺留言,我會盡力解決你的問題。 前言 快過年了,不知道你們啥時候放年假,忙不忙。反正我是挺閑的,所以有時間寫 b...
閱讀 1333·2021-09-04 16:40
閱讀 3460·2021-07-28 00:13
閱讀 2884·2019-08-30 11:19
閱讀 2619·2019-08-29 12:29
閱讀 3172·2019-08-29 12:24
閱讀 1127·2019-08-26 13:28
閱讀 2401·2019-08-26 12:01
閱讀 3451·2019-08-26 11:35