מבוא לנתוני האביב REST

1. סקירה כללית

מאמר זה יסביר את היסודות של Spring Data REST ויראה כיצד להשתמש בו לבניית REST API פשוט.

באופן כללי, Spring Data REST בנוי על גבי פרויקט Spring Data ומאפשר לבנות בקלות שירותי REST המונעים על ידי היפר-מדיה המתחברים למאגרי Spring Data - כולם משתמשים ב- HAL כסוג ההיפר-מדיה המניע.

זה לוקח הרבה מהעבודה הידנית המשויכת בדרך כלל למשימות כאלה והופך את יישום פונקציונליות CRUD בסיסית ליישומי אינטרנט לפשוטים למדי.

2. תלות Maven

התלות הבאות של Maven נדרשות ליישום הפשוט שלנו:

 org.springframework.boot spring-boot-starter org.springframework.boot

החלטנו להשתמש ב- Spring Boot לדוגמא זו, אך גם Spring הקלאסי יעבוד מצוין. בחרנו גם להשתמש במסד הנתונים המשובץ H2 על מנת למנוע הגדרה נוספת, אך ניתן להחיל את הדוגמה על כל מסד נתונים.

3. כתיבת היישום

נתחיל בכתיבת אובייקט תחום שייצג משתמש באתר שלנו:

@Entity בכיתה ציבורית SiteUser {@Id @GeneratedValue (אסטרטגיה = GenerationType.AUTO) מזהה ארוך פרטי; שם מחרוזת פרטי; דוא"ל מחרוזת פרטי; // סטרים וקובעים סטנדרטיים}

לכל משתמש יש שם ודואר אלקטרוני, כמו גם מזהה שנוצר אוטומטית. כעת נוכל לכתוב מאגר פשוט:

@RepositoryRestResource (collectionResourceRel = "משתמשים", נתיב = "משתמשים") ממשק ציבורי UserRepository מרחיב את PagingAndSortingRepository {רשימה findByName (@Param ("שם") שם מחרוזת); }

זהו ממשק המאפשר לבצע איתו פעולות שונות אתר משתמש חפצים. הגדרנו גם שאילתה מותאמת אישית שתספק רשימת משתמשים על פי שם נתון.

ה @RepositoryRestResource ביאור הוא אופציונלי ומשמש להתאמה אישית של נקודת הקצה REST. אם היינו מחליטים להשמיט את זה, אביב ייצור נקודת סיום באופן אוטומטי ב- "/ אתר משתמשים" במקום "/ משתמשים“.

לסיום נכתוב תקן מחלקה ראשית של אתחול האביב לאתחול היישום:

@SpringBootApplication מחלקה ציבורית SpringDataRestApplication {public static void main (String [] args) {SpringApplication.run (SpringDataRestApplication.class, args); }}

זהו זה! כעת יש לנו ממשק API REST פונקציונלי לחלוטין. בואו נסתכל על זה בפעולה.

4. גישה ל- API של REST

אם נריץ את היישום ונעבור אל // localhost: 8080 / בדפדפן, נקבל את ה- JSON הבא:

{"_links": {"users": {"href": "// localhost: 8080 / users {? page, size, sort}", "templated": true}, "profile": {"href": " // localhost: 8080 / profile "}}}

כפי שאתה יכול לראות, יש "/ משתמשים"נקודת קצה זמינה, וכבר יש לה את"?עמוד“, “?גודל"ו"?סוג" אפשרויות.

יש גם תקן "/פּרוֹפִילנקודת קצה, המספקת מטא נתונים של יישומים. חשוב לציין כי התגובה בנויה באופן העוקב אחר אילוצי סגנון האדריכלות REST. באופן ספציפי, הוא מספק ממשק אחיד והודעות תיאור עצמי. המשמעות היא שכל הודעה מכילה מספיק מידע כדי לתאר כיצד לעבד את ההודעה.

אין עדיין משתמשים ביישום שלנו, אז מעבר אל // localhost: 8080 / משתמשים פשוט יציג רשימה ריקה של משתמשים. בואו נשתמש בתלתל כדי להוסיף משתמש.

$ curl -i -X ​​POST -H "סוג תוכן: יישום / json" -d '{"name": "Test", \ "email": "[email protected]"}' // localhost: 8080 / משתמשים {"name": "test", "email": "[email protected]", "_links": {"self": {"href": "// localhost: 8080 / users / 1"}, "websiteUser" : {"href": "// localhost: 8080 / משתמשים / 1"}}}

בואו נסתכל גם על כותרות התגובה:

HTTP / 1.1 201 שרת נוצר: Apache-Coyote / 1.1 מיקום: // localhost: 8080 / משתמשים / 1 סוג תוכן: יישום / hal + json; charset = UTF-8 העברת קידוד: chunked

תבחין שסוג התוכן שהוחזר הוא “יישום / hal + json". HAL הוא פורמט פשוט הנותן דרך עקבית וקלה לקישור בין משאבים ב- API שלך. הכותרת מכילה אוטומטית את ה- מקום כותרת, שהיא הכתובת בה אנו יכולים להשתמש כדי לגשת למשתמש החדש שנוצר.

כעת אנו יכולים לגשת למשתמש זה ב // localhost: 8080 / משתמשים / 1

{"name": "test", "email": "[email protected]", "_links": {"self": {"href": "// localhost: 8080 / users / 1"}, "websiteUser" : {"href": "// localhost: 8080 / משתמשים / 1"}}}

אתה יכול גם להשתמש בסלסול או בכל לקוח אחר של REST להנפיק בקשות PUT, PATCH ו- DELETE. חשוב גם לציין ש- Spring Data REST עוקב באופן אוטומטי אחר עקרונות ה- HATEOAS. HATEOAS הוא אחד מאילוצי סגנון הארכיטקטורה REST, ומשמעות הדבר היא שיש להשתמש בהיפר טקסט כדי למצוא את דרכך דרך ה- API.

לבסוף, בואו ננסה לגשת לשאילתה המותאמת אישית שכתבנו קודם ולמצוא את כל המשתמשים עם השם "מבחן". זה נעשה על ידי מעבר אל // localhost: 8080 / users / search / findByName? Name = test

{"_embedded": {"משתמשים": [{"name": "test", "email": "[email protected]", "_links": {"self": {"href": "// localhost: 8080 / משתמשים / 1 "}," websiteUser ": {" href ":" // localhost: 8080 / users / 1 "}}}]}," _links ": {" self ": {" href ":" / / localhost: 8080 / משתמשים / search / findByName? name = test "}}}

5. מסקנה

הדרכה זו הדגימה את היסודות ליצירת ממשק API פשוט עם REST של Spring Data. הדוגמה המשמשת במאמר זה ניתן למצוא בפרויקט GitHub המקושר.


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