Generáljon Spring Boot REST klienst a Swaggerrel

1. Bemutatkozás

Ebben a cikkben a Swagger Codegen és az OpenAPI Generator projekteket használjuk arra, hogy REST klienseket hozzunk létre OpenAPI / Swagger specifikációs fájlból.

Ezenkívül létrehozunk egy Spring Boot projektet, ahol létrehozott osztályokat fogunk használni.

Mindenre felhasználjuk a Swagger Petstore API példát.

2. Generáljon REST klienst a Swagger Codegen segítségével

A Swagger olyan segédprogramot kínál, amely lehetővé teszi számunkra, hogy különböző programozási nyelvekhez és több keretrendszerhez REST klienseket hozzunk létre.

2.1. Töltse le a Jar fájlt

A code-gen_cli.jar innen tölthető le.

A legújabb verzióért kérjük, ellenőrizze a swagger-codegen-cli adattárat.

2.2. Kliens generálása

Generáljuk kliensünket a parancs végrehajtásával java -jar swagger-code-gen-cli.jar generál:

java -jar swagger-codegen-cli.jar generál \ -i //petstore.swagger.io/v2/swagger.json \ --api-package com.baeldung.petstore.client.api \ --model-package com. baeldung.petstore.client.model \ --invoker-package com.baeldung.petstore.client.invoker \ --group-id com.baeldung \ --artifact-id spring-swagger-codegen-api-client \ --artifact -version 0.0.1-SNAPSHOT \ -l java \ --library resttemplate \ -o spring-swagger-codegen-api-client

A megadott érvek a következőkből állnak:

  • A forrás swagger fájl URL-je vagy elérési útja - a -én érv
  • A generált osztályok csomagjainak nevei - használatával megadva –Api-csomag, –Modell-csomag, –Invoker-csomag
  • Generált Maven projekt tulajdonságok –Csoport-id, –Művész-id, –Művész-változat
  • A generált kliens programozási nyelve - használatával biztosított -l
  • A megvalósítási keretrendszer - a -könyvtár
  • A kimeneti könyvtár - a -o

Az összes Java-val kapcsolatos beállítás felsorolásához írja be a következő parancsot:

java -jar swagger-codegen-cli.jar config-help -l java

A Swagger Codegen a következő Java könyvtárakat támogatja (HTTP kliensek és JSON feldolgozó könyvtárak párjai):

  • mez1 - Jersey1 + Jackson
  • mez2 - Jersey2 + Jackson
  • kitalál - OpenFeign + Jackson
  • okhttp-gson - OkHttp + Gson
  • utólagos felszerelés (Elavult) - Retrofit1 / OkHttp + Gson
  • utólagos felszerelés2 - Retrofit2 / OkHttp + Gson
  • rest-sablon - Tavaszi RestTemplate + Jackson
  • pihenés könnyű - Nyugalom + Jackson

Ebben az írásban választottuk rest-sablon mivel a tavaszi ökoszisztéma része.

3. Generáljon REST klienst az OpenAPI Generator segítségével

Az OpenAPI Generator a Swagger Codegen egy villája, amely képes 50+ ügyfél létrehozására bármely OpenAPI Specification 2.0 / 3.x dokumentumból.

Míg a Swagger Codegen szolgáltatást a SmartBear tartja fenn, addig az OpenAPI Generatorot egy olyan közösség tartja fenn, amelyen a Swagger Codegen több mint 40 vezető közreműködője és sablonkészítője mint alapító csapat tagja.

3.1. Telepítés

Talán a legegyszerűbb és leghordozhatóbb telepítési módszer a npm package wrapper, amely úgy működik, hogy CLI-csomagolót biztosít a Java-kód által támogatott parancssori opciók tetején. A telepítés egyszerű:

npm install @ openapitools / openapi-generator-cli -g

A JAR fájlra vágyók számára megtalálható a Maven Central-ban. Töltsük le most:

wget //repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/4.2.3/openapi-generator-cli-4.2.3.jar \ -O openapi-generator-cli.jar 

3.2. Kliens generálása

Először is, az OpenAPI Generator opciói szinte megegyeznek a Swagger Codegen lehetőségeivel. A legjelentősebb különbség a -l nyelvi zászló a -g generátor jelző, amely a nyelvet veszi fel az ügyfél előállításához paraméterként.

Ezután hozzunk létre egy klienst, amely egyenértékű azzal, amelyet a Swagger Codegen segítségével generáltunk a befőttes üveg parancs:

java -jar openapi-generator-cli.jar generál \ -i //petstore.swagger.io/v2/swagger.json \ --api-package com.baeldung.petstore.client.api \ --model-package com. baeldung.petstore.client.model \ --invoker-package com.baeldung.petstore.client.invoker \ --group-id com.baeldung \ --artifact-id spring-openapi-generator-api-client \ --artifact -verzió 0.0.1-SNAPSHOT \ -g java \ -p java8 = true \ --könyvtár resttemplate \ -o spring-openapi-generator-api-client

Az összes Java-val kapcsolatos beállítás felsorolásához írja be a következő parancsot:

java -jar openapi-generator-cli.jar config-help -g java

Az OpenAPI Generator ugyanazokat a Java könyvtárakat támogatja, mint a Swagger CodeGen, valamint néhány extra. A következő Java könyvtárakat (HTTP kliensek és JSON feldolgozó könyvtárak párjai) támogatja az OpenAPI Generator:

  • mez1 - Jersey1 + Jackson
  • mez2 - Jersey2 + Jackson
  • kitalál - OpenFeign + Jackson
  • okhttp-gson - OkHttp + Gson
  • utólagos felszerelés (Elavult) - Retrofit1 / OkHttp + Gson
  • utólagos felszerelés2 - Retrofit2 / OkHttp + Gson
  • resttemplate - Tavaszi RestTemplate + Jackson
  • webkliens - 5. tavaszi WebClient + Jackson (csak OpenAPI Generator)
  • nyugodt - Nyugalom + Jackson
  • vertx - VertX + Jackson
  • google-api-kliens - Google API kliens + Jackson
  • nyugodt - Biztos + Jackson / Gson (csak Java 8 esetén)
  • anyanyelvi - Java natív HttpClient + Jackson (csak Java 11; csak OpenAPI Generator)
  • mikroprofil - Mikroprofil kliens + Jackson (csak OpenAPI Generator)

4. Generáljon tavaszi indító projektet

Hozzunk létre most egy új Spring Boot projektet.

4.1. Maven-függőség

Először hozzáadjuk a Generated API Client könyvtár függőségét a projektünkhöz pom.xml fájl:

 com.baeldung spring-swagger-codegen-api-client 0.0.1-SNAPSHOT 

4.2. Tegye ki az API-osztályokat tavaszi babként

A generált osztályok eléréséhez babként kell konfigurálnunk őket:

@Configuration public class PetStoreIntegrationConfig {@Bean public PetApi petApi () {return new PetApi (apiClient ()); } @Bean public ApiClient apiClient () {return new ApiClient (); }}

4.3. API kliens konfigurációja

A ApiClient osztály a hitelesítés, az API alapútvonalának, a közös fejlécek konfigurálására szolgál, és felelős az összes API kérés végrehajtásáért.

Például, ha az OAuth-tal dolgozik:

@Bean public ApiClient apiClient () {ApiClient apiClient = new ApiClient (); OAuth petStoreAuth = (OAuth) apiClient.getAuthentication ("petstore_auth"); petStoreAuth.setAccessToken ("speciális kulcs"); visszatérő apiClient; }

4.4. Tavaszi fő alkalmazás

Importálni kell az újonnan létrehozott konfigurációt:

@SpringBootApplication @Import (PetStoreIntegrationConfig.class) public class PetStoreApplication {public static void main (String [] argumentum) dobja a Kivételt {SpringApplication.run (PetStoreApplication.class, args); }}

4.5. API használata

Mivel API osztályainkat babként konfiguráltuk, szabadon beadhatjuk őket a Spring által kezelt osztályokba:

@Autowired privát PetApi petApi; public List findAvailablePets () {return petApi.findPetsByStatus (Arrays.asList ("elérhető")); }

5. Alternatív megoldások

A REST kliens előállításának más módjai is vannak, nem a Swagger Codegen vagy az OpenAPI Generator CLI végrehajtása.

5.1. Maven plugin

Egy swagger-codegen Maven plugin, amely könnyen konfigurálható a pom.xml lehetővé teszi az ügyfél létrehozását ugyanazokkal a lehetőségekkel, mint a Swagger Codegen CLI.

Ez egy alapvető kódrészlet, amelyet beépíthetünk a projektünkbe pom.xml az ügyfél automatikus előállításához:

 io.swagger swagger-codegen-maven-plugin 2.2.3 generál swagger.yaml java resttemplate 

5.2. Swagger Codegen Online Generator API

Egy már közzétett API, amely segít az ügyfél létrehozásában azáltal, hogy POST kérést küld az URL-re //generator.swagger.io/api/gen/clients/java adja meg a specifikációs URL-t a kérelem törzsében található egyéb opciók mellett.

Tegyünk egy példát egy egyszerű curl paranccsal:

curl -X POST -H "tartalomtípus: application / json" \ -d '{"swaggerUrl": "// petstore.swagger.io/v2/swagger.json"}' \ //generator.swagger.io/ api / gen / clients / java

A válasz JSON formátumú lenne, amely egy letölthető linket tartalmaz, amely tartalmazza a létrehozott kliens kódot zip formátumban. A kimeneti ügyfél testreszabásához átadhatja a Swaager Codegen parancssori felületén használt ugyanazokat a lehetőségeket.

A //generator.swagger.io tartalmaz egy Swagger dokumentációt az API számára, ahol ellenőrizhetjük és kipróbálhatjuk annak dokumentációját.

5.3. OpenAPI Generator Online Generator API

Swagger Godegenhez hasonlóan az OpenAPI Generator online generátorral is rendelkezik. Végezzünk egy példát egy egyszerű curl paranccsal:

curl -X POST -H "tartalomtípus: application / json" \ -d '{"openAPIUrl": "// petstore.swagger.io/v2/swagger.json"}' \ //api.openapi-generator. tech / api / gen / clients / java

A válasz JSON formátumban letölthető linket tartalmaz a létrehozott kliens kódhoz zip formátumban. A kimeneti kliens testreszabásához a Swagger Codegen parancssori felületen használt beállításokat adhatja át.

A //github.com/OpenAPITools/openapi-generator/blob/master/docs/online.md tartalmazza az API dokumentációját.

6. Következtetés

A Swagger Codegen és az OpenAPI Generator segítségével gyorsan létrehozhat REST klienseket az API-hoz számos nyelven és az Ön által választott könyvtárral. Az ügyfélkönyvtárat CLI eszköz, Maven plugin vagy Online API segítségével generálhatjuk.

Ez egy Maven-alapú projekt, amely három Maven modult tartalmaz: a létrehozott Swagger API klienst, a létrehozott OpenAPI klienst és a Spring Boot alkalmazást.

Mint mindig, a GitHubon elérhető kódot is megtalálhatja.


$config[zx-auto] not found$config[zx-overlay] not found