ראשי התיבות REST מייצגים REpresentational State Transfer, בעוד API מייצג ממשק תכנות יישומים. יחד, הם מתייחסים ל- REST API. REST API הוא שירות המעביר בקשות ותגובות בין שתי מערכות תוכנה, בארכיטקטורת REST.
ארכיטקטורת REST בונה שירותי אינטרנט הנגישים דרך כתובות URL באמצעות אחד מארבעת פעלי הבקשה: POST, GET, PUT ו-DELETE. אז אפשר לומר ש-REST API הוא תוכנה המאפשרת לך ליצור, לקרוא, לעדכן ולמחוק משאבים באמצעות כתובות URL.
אתה יכול ללמוד כיצד ליצור REST API באמצעות Spring Boot.
אתחול אפליקציית Spring Boot
הדבר הראשון שאתה צריך לעשות הוא הכירו את היסודות של האביב ולהגדיר יישום Spring Boot. עם זאת, תצטרך לשנות את התלות. בנוסף לתלות האינטרנט, תצטרך לקבל את התלות של Spring Data Java Persistent API (JPA), ואת מנהל ההתקן עבור מסד הנתונים שבו אתה מתכוון להשתמש (יישום זה ישתמש ב-MySQL).
עבור REST API זה, תזדקק לבקר, מודל ומאגר. אז ל- REST API יהיה מבנה הקבצים הבא:
יצירת הדגם
המחלקה הראשונה שתצטרך ליצור היא מודל הלקוח, המאחסן את לוגיקת הנתונים.
חֲבִילָה com.onlineshopaholics.api.model;
יְבוּא jakarta.persistence. טור;
יְבוּא jakarta.persistence. יֵשׁוּת;
יְבוּא jakarta.persistence. GeneratedValue;
יְבוּא jakarta.persistence. GenerationType;
יְבוּא jakarta.persistence. תְעוּדַת זֶהוּת;
יְבוּא jakarta.persistence. שולחן;@שולחן(שם="צרכן")
@יֵשׁוּת
פּוּמְבֵּימעמדצרכן{
@תְעוּדַת זֶהוּת
@GeneratedValue(אסטרטגיה = GenerationType. אוטומטי)
פְּרָטִי מזהה מספר שלם;@טור(שם="שם לקוח")
פְּרָטִי שם מחרוזת;פְּרָטִי מחרוזת מייל;
פּוּמְבֵּי מספר שלם getId(){
לַחֲזוֹר תְעוּדַת זֶהוּת;
}פּוּמְבֵּיבָּטֵלתקבע תעודת זהות(מזהה מספר שלם){
זֶה.id = id;
}פּוּמְבֵּי חוּט getName(){
לַחֲזוֹר שֵׁם;
}פּוּמְבֵּיבָּטֵלsetName(שם המחרוזת){
זֶה.name = שם;
}פּוּמְבֵּי חוּט getEmail(){
לַחֲזוֹר אימייל;
}
פּוּמְבֵּיבָּטֵלsetEmail(מחרוזת מייל){
זֶה.email = אימייל;
}
}
ממחלקת הלקוחות שלמעלה, תראה שלכל לקוח יהיה מזהה, שם ואימייל. תבחין גם במספר הערות המשרתות מטרות שונות.
- @Entity: מכריז על מחלקת הלקוחות כישות JPA. המשמעות היא ש-JPA ישתמש בשדות במחלקה כדי ליצור עמודות במסד נתונים יחסי.
- @טבלה: מציינת את שם הטבלה שתמפה למחלקת מודל הלקוח.
- @Id: מייעד מאפיין שיזהה באופן ייחודי את הישות במסד הנתונים.
- @GeneratedValue ו-@GenerationType: אלה פועלים יחד כדי לציין אסטרטגיית יצירה אוטומטית עבור השדה שהוא משייך אליו. לכן, שדה המזהה יפיק אוטומטית ערך ייחודי בכל פעם שתיצור לקוח חדש.
- @עמודה: מייעד מאפיין שממפה לעמודה במסד הנתונים. אז, מאפיין השם ימפה לעמודת שם לקוח במסד הנתונים.
יצירת המאגר
מאגר זה יאפשר לך ליצור אינטראקציה עם נתוני הלקוחות במסד הנתונים.
חֲבִילָה com.onlineshopaholics.api.repository;יְבוּא org.springframework.data.repository. CrudRepository;
יְבוּא com.onlineshopaholics.api.model. צרכן;
פּוּמְבֵּימִמְשָׁקמאגר לקוחותמשתרעCrudRepository<צרכן, מספר שלם>{}
מאגר הלקוחות מתרחב מאגר CrudRepositoy של אביב ממשק, ומעבירים לו את מחלקת Customer model יחד עם סוג המזהה הייחודי של הישות, Integer.
ממשק CrudRepository מספק גישה ליותר מ-10 פעולות, כולל שיטות ה-CRUD הגנריות שתזדקקו להן עבור REST API. לכן, מכיוון שה-CrudRepository כבר מגדיר את השיטות שתזדקק לו, אין צורך להצהיר עליהן במפורש בממשק CustomerRepository.
יצירת הבקר
הבקר מאפשר לך לעדכן את הנתונים במסד הנתונים שלך באמצעות המודל והמאגר.
חֲבִילָה com.onlineshopaholics.api.controller;יְבוּא java.util. אופציונאלי;
יְבוּא ביאור.org.springframework.beans.factory. חוטי אוטומטי;
יְבוּא org.springframework.web.bind.annotation. מחק מיפוי;
יְבוּא org.springframework.web.bind.annotation. GetMapping;
יְבוּא org.springframework.web.bind.annotation. PathVariable;
יְבוּא org.springframework.web.bind.annotation. PostMapping;
יְבוּא org.springframework.web.bind.annotation. PutMapping;
יְבוּא org.springframework.web.bind.annotation. RequestBody;
יְבוּא org.springframework.web.bind.annotation. RequestMapping;
יְבוּא org.springframework.web.bind.annotation. RequestParam;
יְבוּא org.springframework.web.bind.annotation. ResponseBody;
יְבוּא org.springframework.web.bind.annotation. RestController;
יְבוּא com.onlineshopaholics.api.model. צרכן;
יְבוּא com.onlineshopaholics.api.repository. מאגר לקוחות;
@RestController
@RequestMapping("/לקוחות")
פּוּמְבֵּימעמדבקר לקוחות{
@Wired אוטומטי
פְּרָטִי מאגר לקוחות מאגר לקוחות;
// צור לקוח חדש
@PostMapping("/לְהוֹסִיף")
פּוּמְבֵּי צרכן הוסף לקוח חדש(@RequestBody Customer newCustomer){
משתמש לקוח = חָדָשׁ צרכן();
user.setName (newCustomer.getName());
user.setEmail (newCustomer.getEmail());
customerRepository.save (משתמש);
לַחֲזוֹר מִשׁתַמֵשׁ;
}
// הצג את כל הלקוחות
@GetMapping("צפה בהכל")
פּוּמְבֵּי@ResponseBodyניתן לחזרהgetAllCustomers() {
לַחֲזוֹר customerRepository.findAll();
}
// הצג לקוח ספציפי
@GetMapping("view/{id}")
פּוּמְבֵּי אופציונאליgetCustomer(@PathVariable מזהה שלם) {
לַחֲזוֹר customerRepository.findById (מזהה);
}
// עדכן לקוח קיים
@PutMapping("/edit/{id}")
פּוּמְבֵּי חוּט עדכון(@RequestBody Customer updateCustomer, @PathVariable זיהוי שלם){
לַחֲזוֹר customerRepository.findById (מזהה)
.map (לקוח -> {
customer.setName (updateCustomer.getName());
customer.setEmail (updateCustomer.getEmail());
customerRepository.save (לקוח);
לַחֲזוֹר"פרטי הלקוח עודכנו בהצלחה!";
}).orElseGet(() -> {
לַחֲזוֹר"הלקוח הזה לא קיים";
});
}
// מחק לקוח
@DeleteMapping("delete/{id}")
פּוּמְבֵּי חוּט לִמְחוֹק(@PathVariable("תְעוּדַת זֶהוּת")מזהה מספר שלם) {
customerRepository.deleteById (מזהה);
לַחֲזוֹר"הלקוח נמחק בהצלחה!";
}
}
הבקר שלמעלה מצייד את REST API בפעולות CRUD, על ידי שימוש בחמש מ- CrudRepository
- @RestController: הערה זו משרתת שתי מטרות. זה מסמן מחלקה לגילוי על ידי סריקת רכיבים. זה גם אומר ל-Spring לכתוב את ערך ההחזרה עבור כל השיטות, במחלקה זו, בגוף התגובה.
- @RequestMapping: מגדיר את דפוס הבקשה הבסיסי שהבקר יטפל בו. אז, בקר זה יטפל בכל הבקשות ל"/לקוחות".
- @ResponseBody: מאפשר לשיטה להחזיר ישות שלמה.
- @RequestBody: מאפשר לך להמיר את גוף הבקשה לאובייקט.
- @RequestParam: מאפשר לך לבודד מאפיין אחד מאובייקט.
- @PathVariable: מאפשר לך למפות ערך בקשה למציין מיקום. הוא ממפה את המזהה שניתן לשיטת המחיקה עם ערך קיים במסד הנתונים.
- @PostMapping: מאפשר לך ליצור משאבים.
- @GetMapping: מאפשר לך לקרוא נתוני משאבים.
- @PutMapping: מאפשר לך לעדכן משאבים.
- @DeleteMapping: מאפשר לך למחוק משאבים.
חיבור מסד הנתונים לאפליקציה שלך
כדי לחבר מסד נתונים לכל יישום Spring, תצטרך להשתמש ב- application.properties קובץ תחת תיקיית המשאבים. קובץ זה ריק בהתחלה, כך שתוכל לאכלס אותו במאפיינים המתאימים למסד הנתונים שבו אתה מתכוון להשתמש. יישום זה ישתמש במסד נתונים של MySQL, כך שקובץ application.properties יכיל את הנתונים הבאים:
spring.jpa.hibernate.ddl-auto=עדכון
spring.jpa.open-in-view=false
spring.datasource.url=jdbc: mysql://${MYSQL_HOST: localhost}:3306/onlineshopaholics
spring.datasource.username=root
spring.datasource.password=securepw
spring.datasource.driver-class-name=com.mysql.cj.jdbc. נהג
הנתונים שלמעלה מראים שאפליקציה זו תתחבר למסד נתונים של MySQL הנקרא onlineshopaholics, עם שם משתמש "שורש" ו-"securepw" כסיסמה. השלב הבא שלך הוא ליצור את מסד הנתונים וטבלת הלקוחות ב-MySQL.
יצירת בקשות
ישנם כלים רבים שבהם אתה יכול להשתמש כדי לבדוק את REST API שלך. Postman הוא כלי פופולרי לבדיקת REST API, ואתה יכול להשתמש בו כדי לבדוק את ה-API הפשוט שבנית. לאחר יצירת טבלת MySQL והפעלת אפליקציית Spring, תוכל להפעיל את Postman ולהתנסות עם ארבעת פעלי הבקשה.
בקשת POST
בקשה זו תאפשר לך ליצור לקוחות חדשים באמצעות REST API. כדי להשלים בקשה זו, תצטרך לעבור לקטע הכותרות של בקשת הפוסט שלך וליצור כותרת חדשה (Content-Type). עליך להגדיר את הערך של כותרת זו לאפליקציה/json, מכיוון שתיצור לקוחות חדשים באמצעות JSON.
בגוף הבקשה, תצטרך לשנות את הסוג לגולמי ולהכניס את ה-JSON שלך. לאחר מכן תצטרך להכניס את כתובת האתר של הפוסט:
שליחת הבקשה תחזיר את התגובה הבאה:
ניתן לראות שהבקשה הצליחה, וללקוח החדש יש גם מזהה.
קבל בקשה
עכשיו, כשיש לך לקוח, אתה יכול להציג אותו באמצעות בקשת קבל שמחזירה את כל הלקוחות:
או כל לקוח לפי מזהה:
בקשת PUT
אתה יכול לעדכן את ג'נט בשם משפחה ואימייל חדשים.
מחק בקשה
אתה יכול גם למחוק את ג'נט ממסד הנתונים.
בדוק את ה-Spring REST API שלך באמצעות JUnit
עם Spring Boot, אתה יכול לבדוק כל יישום (כולל ממשקי API של REST) באמצעות קובץ הבדיקה של Spring. בדיקות תוכנה חשובות ל- Spring Boot. כל אפליקציית Spring שאתחול משתמשת ב-JUnit לבדיקה ומאפשרת לך לשלוח בקשות לממשקי REST API שלך.