צור אתחול האביב REST Client עם Swagger

1. הקדמה

במאמר זה נשתמש בפרויקטים של Swagger Codegen ו- OpenAPI Generator כדי ליצור לקוחות REST מקובץ מפרט OpenAPI / Swagger.

כמו כן, ניצור פרויקט Spring Boot, בו נשתמש בכיתות שנוצרו.

נשתמש בדוגמה API של Swagger Petstore לכל דבר.

2. צור לקוח REST עם Swagger Codegen

Swagger מספק צנצנת שירות המאפשרת לנו ליצור לקוחות REST עבור שפות תכנות שונות ומסגרות מרובות.

2.1. הורד את קובץ הצנצנת

ה code-gen_cli.jar ניתן להוריד מכאן.

לקבלת הגרסה החדשה ביותר, אנא בדוק במאגר swagger-codegen-cli.

2.2. צור לקוח

בואו ליצור את הלקוח שלנו על ידי ביצוע הפקודה java -jar swagger-code-gen-cli.jar ליצור:

java -jar swagger-codegen-cli.jar ליצור \ -i //petstore.swagger.io/v2/swagger.json \ - חבילה -אפי com.baeldung.petstore.client.api \ --model-package package. baeldung.petstore.client.model \ - חבילה אינווקר com.baeldung.petstore.client.invoker \ --group-id com.baeldung \ --artifact-id spring-swagger-codegen-api-client \ --artifact -גירסה 0.0.1-SNAPSHOT \ -l java \ - ספריית resttemplate \ -o אביב-swagger-codegen-api-client

הטיעונים הניתנים כוללים:

  • כתובת אתר או נתיב של קובץ swagger למקור - המסופק באמצעות -אני טַעֲנָה
  • שמות חבילות לשיעורים שנוצרו - מסופקים באמצעות –חבילה -אפי, חבילת דוגמניות, –חבילת מזמין
  • מאפייני פרויקט Maven שנוצרו –קבוצת מזהה, –מזהה-חפץ, גרסת חפץ
  • שפת התכנות של הלקוח שנוצר - מסופקת באמצעות -l
  • מסגרת היישום - הניתנת באמצעות -סִפְרִיָה
  • ספריית הפלט - מסופקת באמצעות -או

כדי לרשום את כל האפשרויות הקשורות ל- Java, הקלד את הפקודה הבאה:

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

Swagger Codegen תומכת בספריות Java הבאות (זוגות של לקוחות HTTP וספריות עיבוד JSON):

  • ג 'רזי 1 - ג'רזי 1 + ג'קסון
  • ג 'רזי 2 - ג'רזי 2 + ג'קסון
  • לְהַעֲמִיד פָּנִים - OpenFeign + ג'קסון
  • okhttp-gson - OkHttp + Gson
  • התאמה מחודשת (מיושן) - Retrofit1 / OkHttp + Gson
  • רטרופיט 2 - Retrofit2 / OkHttp + Gson
  • תבנית מנוחה - Spring RestTemplate + ג'קסון
  • נוח לנוח - מנוחה + ג'קסון

בכתב זה בחרנו תבנית מנוחה כיוון שהוא חלק מהמערכת האקולוגית של האביב.

3. צור לקוח REST באמצעות OpenAPI Generator

מחולל OpenAPI הוא מזלג של Swagger Codegen המסוגל ליצור 50+ לקוחות מכל מסמכי OpenAPI Specification 2.0 / 3.x.

בעוד שסוואגר קודגן מתוחזקת על ידי SmartBear, OpenAPI Generator מתוחזקת על ידי קהילה הכוללת יותר מ -40 מהתורמים הבולטים ויוצרים התבניות של Swagger Codegen כחברי צוות מייסדים.

3.1. הַתקָנָה

אולי שיטת ההתקנה הקלה והניידת ביותר היא שימוש ב- npm עטיפת חבילות, שעובדת על ידי מתן עטיפת CLI על גבי אפשרויות שורת הפקודה הנתמכות בקוד Java. ההתקנה היא פשוטה:

npm להתקין @ openapitools / openapi-generator-cli -g

למי שרוצה את קובץ ה- JAR, ניתן למצוא אותו במרכז Maven. בואו נוריד את זה עכשיו:

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. צור לקוח

ראשית, האפשרויות עבור OpenAPI Generator זהות כמעט לאלו של Swagger Codegen. ההבדל הבולט ביותר הוא החלפת ה- -l דגל שפה עם -g דגל מחולל, שלוקח את השפה להפקת הלקוח כפרמטר.

לאחר מכן, בואו ניצור לקוח שווה ערך לזה שיצרנו עם Swagger Codegen באמצעות ה- קַנקַן פקודה:

java -jar openapi-generator-cli.jar ליצור \ -i //petstore.swagger.io/v2/swagger.json \ - חבילה חבילה com.baeldung.petstore.client.api \ --model-package com. baeldung.petstore.client.model \ - חבילה אינווקר com.baeldung.petstore.client.invoker \ --group-id com.baeldung \ --artifact-id spring-openapi-generator-api-client \ --artifact -החלפה 0.0.1-SNAPSHOT \ -g java \ -p java8 = true \ --template resttemplate \ -o spring-openapi-generator-api-client

כדי לרשום את כל האפשרויות הקשורות ל- Java, הקלד את הפקודה:

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

מחולל OpenAPI תומך בכל אותן ספריות Java כמו Swagger CodeGen ועוד כמה תוספות. ספריות Java הבאות (זוגות של לקוחות HTTP וספריות עיבוד JSON) נתמכות על ידי OpenAPI Generator:

  • ג 'רזי 1 - ג'רזי 1 + ג'קסון
  • ג 'רזי 2 - ג'רזי 2 + ג'קסון
  • לְהַעֲמִיד פָּנִים - OpenFeign + ג'קסון
  • okhttp-gson - OkHttp + Gson
  • התאמה מחודשת (מיושן) - Retrofit1 / OkHttp + Gson
  • רטרופיט 2 - Retrofit2 / OkHttp + Gson
  • resttemplate - Spring RestTemplate + ג'קסון
  • לקוח אינטרנט - אביב 5 WebClient + ג'קסון (מחולל OpenAPI בלבד)
  • נינוחה - מנוחה + ג'קסון
  • vertx VertX + ג'קסון
  • google-api-client - לקוח API של גוגל + ג'קסון
  • היה סמוך ובטוח - היה סמוך ובטוח + ג'קסון / Gson (Java 8 בלבד)
  • יָלִיד - יליד Java HttpClient + Jackson (Java 11 בלבד; OpenAPI Generator בלבד)
  • מיקרופיל - לקוח מיקרופיל + ג'קסון (מחולל OpenAPI בלבד)

4. צור פרויקט אתחול האביב

בואו ניצור כעת פרויקט Spring Boot חדש.

4.1. תלות של Maven

ראשית נוסיף את התלות של ספריית לקוח ה- API שנוצר - לפרויקט שלנו pom.xml קוֹבֶץ:

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

4.2. חשף שיעורי API כשעועית אביב

כדי לגשת לשיעורים שנוצרו, עלינו להגדיר אותם כשעועית:

@Configuration public class PetStoreIntegrationConfig {@Bean public PetApi petApi () {להחזיר PetApi חדש (apiClient ()); } @Bean ApiClient הציבור apiClient () {להחזיר ApiClient חדש (); }}

4.3. תצורת לקוח API

ה ApiClient class משמש להגדרת תצורה של אימות, נתיב הבסיס של ה- API, כותרות נפוצות, והוא אחראי על ביצוע כל בקשות ה- API.

לדוגמה, אם אתה עובד עם OAuth:

@Bean ApiClient apiClient () {ApiClient apiClient = ApiClient חדש (); OAuth petStoreAuth = (OAuth) apiClient.getAuthentication ("petstore_auth"); petStoreAuth.setAccessToken ("מפתח מיוחד"); החזר apiClient; }

4.4. יישום ראשי באביב

עלינו לייבא את התצורה החדשה שנוצרה:

@SpringBootApplication @Import (PetStoreIntegrationConfig.class) מחלקה ציבורית PetStoreApplication {main public סטטי ריק (String [] args) זורק חריג {SpringApplication.run (PetStoreApplication.class, args); }}

4.5. שימוש ב- API

מכיוון שהגדרנו את שיעורי ה- API שלנו כשעועית, אנו יכולים להזריק אותם בחופשיות לשיעורים המנוהלים באמצעות אביב

@ PetApi פרטית אוטומטית petApi; רשימה ציבורית findAvailablePets () {return petApi.findPetsByStatus (Arrays.asList ("זמין")); }

5. פתרונות אלטרנטיביים

ישנן דרכים אחרות ליצור לקוח REST מלבד ביצוע Swagger Codegen או OpenAPI Generator CLI.

5.1. תוסף Maven

תוסף Maven של סוואגר-קודגן שניתן להגדיר בקלות ב שלך pom.xml מאפשר ליצור את הלקוח עם אותן אפשרויות כמו Swagger Codegen CLI.

זהו קטע קוד בסיסי שנוכל לכלול בפרויקט שלנו pom.xml כדי ליצור לקוח באופן אוטומטי:

 io.swagger swagger-codegen-maven-plugin 2.2.3 ליצור swagger.yaml java resttemplate 

5.2. ממשק ה- API של Swagger Codegen Online Generator

ממשק API שפורסם כבר המסייע לנו ביצירת הלקוח באמצעות שליחת בקשת POST לכתובת האתר //generator.swagger.io/api/gen/clients/java העברת כתובת ה- URL המפרט לצד אפשרויות אחרות בגוף הבקשה.

בואו נעשה דוגמא באמצעות פקודת תלתל פשוטה:

תלתל -X POST -H "סוג תוכן: יישום / json" \ -d '{"swaggerUrl": "// petstore.swagger.io/v2/swagger.json"}' \ //generator.swagger.io/ api / gen / clients / java

התגובה תהיה בפורמט JSON המכיל קישור להורדה המכיל את קוד הלקוח שנוצר בפורמט zip. אתה יכול לעבור את אותן אפשרויות המשמשות ב- Swaager Codegen CLI כדי להתאים אישית את לקוח הפלט.

//generator.swagger.io מכיל תיעוד של Swagger עבור ה- API שבו אנו יכולים לבדוק את התיעוד שלו ולנסות אותו.

5.3. OpenAPI Generator Online Generator API

כמו Swagger Godegen, ל- OpenAPI Generator יש גם גנרטור מקוון. בואו לבצע דוגמה באמצעות פקודת תלתל פשוטה:

סלסול -X POST -H "סוג תוכן: יישום / json" \ -d '{"openAPIUrl": "// petstore.swagger.io/v2/swagger.json"}' \ //api.openapi-generator. tech / api / gen / clients / java

התגובה, בפורמט JSON, תכיל קישור להורדה לקוד הלקוח שנוצר בפורמט zip. אתה יכול להעביר את אותן אפשרויות המשמשות ב- Swagger Codegen CLI כדי להתאים אישית את לקוח הפלט.

//github.com/OpenAPITools/openapi-generator/blob/master/docs/online.md מכיל את התיעוד עבור ה- API.

6. מסקנה

Swagger Codegen ו- OpenAPI Generator מאפשרים לך ליצור לקוחות REST במהירות עבור ה- API שלך עם שפות רבות ועם הספרייה שבחרת. אנו יכולים ליצור את ספריית הלקוחות באמצעות כלי CLI, תוסף Maven או API מקוון.

זהו פרויקט מבוסס Maven המכיל שלושה מודולים של Maven: לקוח ה- Swagger API שנוצר, לקוח OpenAPI שנוצר ויישום Spring Boot.

כמו תמיד, אתה יכול למצוא את הקוד הזמין ב- GitHub.


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