成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Spring Data REST API集成Springfox、Swagger

darcrand / 1234人閱讀

摘要:請(qǐng)注意,截至目前版本,用于的集成仍處于孵化階段,并且存在一些嚴(yán)重的錯(cuò)誤和缺少的功能例如,請(qǐng)參閱此處和此處。響應(yīng)可以使用和注解來(lái)調(diào)整不同的響應(yīng)狀態(tài)及其有效結(jié)論允許您在創(chuàng)建數(shù)據(jù)庫(kù)驅(qū)動(dòng)的時(shí)產(chǎn)生快速結(jié)果。

原文: Documenting a Spring Data REST API with Springfox and Swagger

使用Spring Date REST,你可以迅速為Spring Date repositories的創(chuàng)建REST API,并提供CRUD和更多功能。然而,在嚴(yán)謹(jǐn)?shù)腁PI開(kāi)發(fā)過(guò)成功,您還希望擁有自動(dòng)生成的最新API文檔。

Code Example

本文附帶了工作示例代碼[github]()

Swagger提供了一個(gè)用于記錄REST API的規(guī)范。通過(guò)使用Springfox,我們有一個(gè)工具可以作為Spring應(yīng)用程序和Swagger之間的橋梁,為某些Spring bean和注釋創(chuàng)建一個(gè)Swagger文檔。

Springfox最近還添加了一個(gè)為Spring Data REST API創(chuàng)建Swagger文檔的功能。 這個(gè)功能還在孵化,但是我仍然玩了一下,以評(píng)估它是否可以在真實(shí)項(xiàng)目中使用。 因?yàn)槿绻沁@樣,Spring Data REST和Springfox的結(jié)合將允許快速開(kāi)發(fā)一個(gè)記錄良好的REST API。

請(qǐng)注意,截至目前(版本2.7.0),用于Spring Data REST的Springfox集成仍處于孵化階段,并且存在一些嚴(yán)重的錯(cuò)誤和缺少的功能(例如,請(qǐng)參閱此處和此處)。 因此,下面的說(shuō)明和代碼示例基于當(dāng)前的2.7.1-SNAPSHOT版本,其中可以大大改進(jìn)。

在Spring Boot / Spring Data REST應(yīng)用程序中啟用Springfox

為了使Springfox能夠?yàn)槲覀兊腟pring Data REST API創(chuàng)建一個(gè)Swagger文檔,您必須執(zhí)行以下步驟。

添加Springfox依賴

將以下依賴項(xiàng)添加到您的應(yīng)用程序(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創(chuàng)建API文檔。

springfox-data-rest包含為Spring Data REST存儲(chǔ)庫(kù)自動(dòng)創(chuàng)建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注解通過(guò)在Spring應(yīng)用程序上下文中注冊(cè)某些bean來(lái)啟用Swagger 2支持。

@Import注釋將額外的類導(dǎo)入到Spring應(yīng)用程序上下文中,這些需要從Spring Data REST存儲(chǔ)庫(kù)自動(dòng)創(chuàng)建Swagger文檔。

創(chuàng)建Docket bean

你可以選擇創(chuàng)建一個(gè)Docket類型的Spring bean。 這將被Springfox拿起來(lái)配置一些swagger文檔輸出。

@Configuration
public class SpringfoxConfiguration {
  
  @Bean
  public Docket docket() {
    return new Docket(DocumentationType.SWAGGER_2)
      .tags(...)
      .apiInfo(...)
      ...
  }
  
}
Spring Data repositories添加注解

另外可選地,您可以使用@Api,@ApiOperation和@ApiParam注釋來(lái)注釋由Spring Data REST公開(kāi)的Spring Data存儲(chǔ)庫(kù)。 以下更多細(xì)節(jié)。

輸出

最后,通過(guò)訪問(wèn)瀏覽器中的http:// localhost:8080 / swagger-ui.html,您應(yīng)該能夠查看Spring Data REST API的Swagger文檔。 結(jié)果應(yīng)該如下圖所示。

自定義輸出

上圖中的數(shù)字顯示了一些可以自定義生成的API文檔中的東西的地方。 以下各節(jié)介紹了我認(rèn)為重要的一些定制。 你可以定制超過(guò)我發(fā)現(xiàn)的東西,所以隨時(shí)添加評(píng)論,如果你發(fā)現(xiàn)我錯(cuò)過(guò)的東西!

通用的API信息

像標(biāo)題,描述,許可等信息可以通過(guò)創(chuàng)建一個(gè) Docket bean來(lái)配置,如上面的代碼片段,并使用其setter來(lái)更改所需的設(shè)置。

Repository描述

可以通過(guò)創(chuàng)建一個(gè)名稱與默認(rèn)API名稱完全相同的標(biāo)記(示例中的“地址實(shí)體”)來(lái)更改存儲(chǔ)庫(kù)的描述,并向 Docket 對(duì)象中的此標(biāo)記提供描述,并使用 @Api 將該標(biāo)記庫(kù)與該標(biāo)記庫(kù)相連接 注解。 到目前為止,我找不到修改存儲(chǔ)庫(kù)名稱的方法。

@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
}
方法描述

對(duì)單個(gè)API操作的描述可以通過(guò) @ApiOperation 注釋來(lái)修改,如下所示:

public interface AddressRepository extends PagingAndSortingRepository {
  
  @ApiOperation("find all Addresses that are associated with a given Customer")
  Page
findByCustomerId(@Param("customerId") Long customerId, Pageable pageable); }
輸入?yún)?shù)

輸入?yún)?shù)的名稱和描述可以使用 @ApiParam 注釋進(jìn)行配置。 請(qǐng)注意,從Springfox 2.7.1開(kāi)始,參數(shù)名稱也從Spring Data提供的 @Param 注釋中讀取。

public interface AddressRepository extends PagingAndSortingRepository {
  
  Page
findByCustomerId(@Param("customerId") @ApiParam(value="ID of the customer") Long customerId, Pageable pageable); }
響應(yīng)

可以使用 @ApiResponses@ApiResponse 注解來(lái)調(diào)整不同的響應(yīng)狀態(tài)及其有效payload:

public interface AddressRepository extends PagingAndSortingRepository {
    
  @Override
  @ApiResponses({@ApiResponse(code=201, message="Created", response=Address.class)})
  Address save(Address address);
  
}
結(jié)論

Spring Data REST允許您在創(chuàng)建數(shù)據(jù)庫(kù)驅(qū)動(dòng)的REST API時(shí)產(chǎn)生快速結(jié)果。 Springfox允許您快速生成該API的自動(dòng)文檔。但是,由Springfox生成的API文檔與每個(gè)細(xì)節(jié)中的實(shí)際API都不匹配。一些手動(dòng)微調(diào)和注釋是必要的,如上面的定制部分所述。

一個(gè)這樣的例子是,示例請(qǐng)求和響應(yīng)的JSON在每種情況下都不能正確地呈現(xiàn),因?yàn)镾pring Data REST使用HAL格式,Springfox僅在少數(shù)情況下使用。通過(guò)手動(dòng)工作,API文檔很難保持每個(gè)細(xì)節(jié)的最新?tīng)顟B(tài)。

我的結(jié)論是,Spring Data REST和Springfox的結(jié)合是一個(gè)很好的起點(diǎn),可以快速生成一個(gè)REST API,它的文檔對(duì)于大多數(shù)用例來(lái)說(shuō)足夠好,特別是當(dāng)API是在一組封閉的開(kāi)發(fā)人員中開(kāi)發(fā)和使用的時(shí)候。對(duì)于公共API,細(xì)節(jié)更重要一點(diǎn),讓Swagger注釋和Springfox配置保持最新的每個(gè)細(xì)節(jié)可能令人沮喪。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/68791.html

相關(guān)文章

  • Java | Spring Boot Swagger2 集成REST ful API 生成接口文檔

    摘要:集成生成接口文檔原文簡(jiǎn)介由于的特性,用來(lái)開(kāi)發(fā)變得非常容易,并且結(jié)合來(lái)自動(dòng)生成文檔變得方便快捷。使用生成,我們可以得到交互式文檔。聽(tīng)過(guò)與的結(jié)合,生成更加完備的文檔。接下來(lái)將基于與搭建完整的文檔系統(tǒng)。 Spring Boot Swagger2 集成REST ful API 生成接口文檔 原文 簡(jiǎn)介 由于Spring Boot 的特性,用來(lái)開(kāi)發(fā) REST ful 變得非常容易,并且結(jié)合 Sw...

    joyvw 評(píng)論0 收藏0
  • spring boot 集成swagger并且使用攔截器的配置問(wèn)題

    摘要:另外的解決方案網(wǎng)上還有另外一種說(shuō)法,可以實(shí)現(xiàn)接口,代碼如下用于添加攔截規(guī)則,先把所有路徑都加入攔截,再一個(gè)個(gè)排除自定義規(guī)則,如果遇到,則把泛型類轉(zhuǎn)成通用服務(wù)易??萍嫉沁@種配置想要生效,必須加注解,不然不起作用。 最近同事問(wèn)我,spring boot集成了swagger,但是在使用攔截器的時(shí)候遇到了問(wèn)題,頁(yè)面無(wú)法訪問(wèn)。經(jīng)過(guò)研究解決了這個(gè)問(wèn)題。 配置問(wèn)題解決 集成swagger就不啰嗦了...

    fsmStudy 評(píng)論0 收藏0
  • Spring Boot [如何優(yōu)雅的編寫(xiě)文檔]

    摘要:導(dǎo)讀在團(tuán)隊(duì)協(xié)作的時(shí)候許多時(shí)候需要用到接口文檔,我們通常通過(guò)手工編寫(xiě)大量重復(fù)格式的文檔,讓我想起了程序員最討厭的兩件事沒(méi)有文檔,編寫(xiě)文檔。對(duì)應(yīng)的資料可自行谷歌。關(guān)于和官網(wǎng)是這樣描述的。我們可以理解為為基于構(gòu)建的自動(dòng)生成文檔。 導(dǎo)讀: 在團(tuán)隊(duì)協(xié)作的時(shí)候許多時(shí)候需要用到接口文檔,我們通常通過(guò)手工編寫(xiě)大量重復(fù)格式的文檔,讓我想起了程序員最討厭的兩件事:沒(méi)有文檔,編寫(xiě)文檔。哈哈,如果使用過(guò)swa...

    曹金海 評(píng)論0 收藏0
  • SpringBoot 實(shí)戰(zhàn) (五) | 集成 Swagger2 構(gòu)建強(qiáng)大的 RESTful API

    摘要:今天給你們帶來(lái)集成的教程。接口返回結(jié)果不明確。這些痛點(diǎn)在前后端分離的大型項(xiàng)目上顯得尤為煩躁。接口返回結(jié)果非常明確,包括數(shù)據(jù)類型,狀態(tài)碼,錯(cuò)誤信息等。生成后的文件依賴如下這里使用的是的版本。另外,關(guān)注之后在發(fā)送可領(lǐng)取免費(fèi)學(xué)習(xí)資料。 微信公眾號(hào):一個(gè)優(yōu)秀的廢人如有問(wèn)題或建議,請(qǐng)后臺(tái)留言,我會(huì)盡力解決你的問(wèn)題。 前言 快過(guò)年了,不知道你們啥時(shí)候放年假,忙不忙。反正我是挺閑的,所以有時(shí)間寫(xiě) b...

    Rindia 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<