JavaRush /בלוג Java /Random-HE /האביב לא מפחיד. שליטה ב-REST שלך
Павел
רָמָה

האביב לא מפחיד. שליטה ב-REST שלך

פורסם בקבוצה
תוכן מחזור המאמרים שימוש חוזר בעבודות של מישהו אחר הוא עניין קדוש לכל מפתח 😌 כדי להמשיך הלאה, צריך להבין את היסודות של רשת מחשבים, הנה סדרת מאמרים . שימו לב לנקודות העיקריות: איך HTTP עובד, מה הם GET, POST, PUT, סטטוסי תגובה, MVC, קרא בנפרד על JSON וסדרה . זה יהיה שימושי ליישם את הדוגמה המוצעת עם servlets, זה יעזור לך לאהוב מגף אביב בכל ליבך. יישום אביב-boot לדוגמה מסדרה זו הוא די פשוט, אך הוא יעזור לכם להבין את המהות של MVC. למטה יהיה קישור לפרויקט מעניין יותר. כדי להכיר את REST והשימוש בו באביב, קרא את שלושת המאמרים האלה . במאמר הראשון תקרא מה זה REST. המאמר השני מדבר על בקשות ותגובות, הקפד לקרוא ולשים לב להערה של החבר פידל. המאמר השלישי יציע דוגמה מעשית ליישום באביב, הגישה ליצירת אפליקציה אינה שונה בהרבה (מועיל להסתכל ולהשוות), ליישם אותה. שימו לב למקום שבו הם מדברים על HttpStatus, ResponseEntity <?> (אם <?> מבלבל, אז קראו את פרק 13. הכללות מתוך "Java. A Beginner's Guide", הרברט שילדט), באותו מאמר קראו על POSTMAN ( בנוסף סרטון קצר על זה ) התקן את POSTMAN, אתה לא צריך את כל התכונות, ראה כיצד ליצור שאילתות שונות. יש אופרטורים שלישיים בדוגמה, רענן את הזיכרון אם שכחת. שימו לב לאופן שבו המאמר לדוגמה מיישם הזרקת שעועית באמצעות @Autowired
@RestController
public class ClientController {

   private final ClientService clientService;

   @Autowired
   public ClientController(ClientService clientService) {
       this.clientService = clientService;
   }
}
עליך להיות מודע לכך שהחל מ-Spring 4.3, ניתן להשמיט את ההערה @Autowired אם למחלקה יש רק בנאי אחד. המסגרת עצמה תבין שצריך ליישם שעועית בקונסטרוקטור. אתה יכול לקרוא עוד במקור זה . ואם אתה זהיר, אז צריכה להיות לך שאלה לגבי המבנה של חבילת השירות , כלומר: למה יש ממשק ClientService ו- Public class ClientServiceImpl - זה נוהג נכון, מאוחר יותר, נדבר על למה זה נחוץ ואנחנו ישתמש בו. זה הכל עם המאמרים. לפני הקריאה, בואו נכתוב. כמו שאומרים: "לא יום בלי קוד!" כנקודת התחלה, בואו ניצור בקשת GET פשוטה. בפעם האחרונה שכתבנו אפליקציה לספקולציות ירקות, git clone https://FromJava@bitbucket.org/FromJava/speculation.git git clone git@bitbucket.org:FromJava/speculation.git פתחו את האפליקציה, ובחבילה ru. java. rush ניצור חבילת בקרים (בקרים מתבנית MVC ימוקמו כאן). צור ProductController בכיתה ציבורית
@RestController
@RequestMapping("/speculation")
public class ProductController {

}
ההערה @RestController מציינת ל-Spring שזהו בקר מנוחה. @RequestMapping - כל שיטות הבקר יקבלו בקשות עם URI שיתחיל במחרוזת שצוינה בסוגריים של ההערות ("/ספקולציה"). אנו כותבים את השיטה הבאה בכיתה
@GetMapping("/simple")
public String simple(){
    return "Легкий GET requestик";
}
אנו משיקים את הפרויקט, הקלידו בשורת הדפדפן: http://localhost:8080/speculation/simple נקבל את התשובה: בקשת GET קלה מספר הסברים: 1. יצרנו מחלקה שסימנה את @RestController כבקר, ציינה את נתיב אליו @RequestMapping ("/ ספקולציה") – הערה זו היא אופציונלית; בלעדיה, הנתיב יתחיל ב-"/". 2. יצרנו שיטה שכאשר היא מבוצעת, מחזירה מחרוזת (Light GET request), סימנו אותה בביאור @GetMapping (ששיטה זו מיועדת במיוחד לבקשות GET) וציינו את הנתיב למתודה ("/simple") 3. השקנו את הפרוייקט (שרת) ביציאה 8080, והגשנו בקשת GET לכתובת: server/controller/method (http://localhost:8080/speculation/simple) 4. The public String simple(){ return שיטת "Easy GET requester" עבדה עבור בקשה זו; } 5. תוצאת השיטה הוחזרה לדפדפן בצורה של המחרוזת "Easy GET request". ובכן, זו התחלה! הכתבות המרתקות ביותר מחכות לכם. שליטה בחומר המוצע לעיל ייקח יותר מיום אחד, אין צורך למהר כאן, הנושא הזה חשוב מאוד וצריך להבין אותו, "לאכול את הפיל בחלקים". להדרכה (לאחר שליטה בחומר): השלם את בקר יישום הספקולציות . צור שיטות: 1) חפש מוצר לפי מזהה השתמש בשיטת productService.findById(); פלט לדוגמה
{
        "id": 1,
        "name": "Картофель",
        "purchasePrice": 20,
        "packaging": null,
        "salePrice": null
 }
לאחר הטמעת שיטות הבקר הנותרות, חשבו: "מדוע שני השדות האחרונים בטלים? מה צריך לעשות כדי שיהיו שם כמה ערכים?" 2) הצג את כל המוצרים בחזית החנות: כדי לחפש את כל המוצרים, השתמש בשיטת productService.findAll(); כדי למלא את שדות האריזה והסימון, השתמש ב- productService.pack(); productService.makeMoney(); הפלט צריך להכיל מערך JSON המפרט מוצרים, לדוגמה:
[
    {
        "id": 1,
        "name": "Картофель",
        "purchasePrice": 20,
        "packaging": "Упаковано в лучшем виде",
        "salePrice": 100
    },
    {
        "id": 2,
        "name": "Морковь",
        "purchasePrice": 14,
        "packaging": "Упаковано в лучшем виде",
        "salePrice": 70
    }
]
3) הוספת מוצר חדש למסד הנתונים (הוספת מוצר: כרוב ומחיר רכישה סיטונאי) השתמש ב: productService.save(); השיטה צריכה להחזיר את מצב ה-Http המתאים. 4) מחיקת מוצר לפי id כדי לעשות זאת, תחילה הטמיע ב- ProductService שיטה המכילה productRepository.deleteById(); ולאחר מכן, השתמש בו בבקר. שיטת הבקר חייבת להחזיר את מצב ה-Http המתאים. 5) שינויים במוצר לפי id (שינוי במחיר הסיטונאי של המוצר ושם המוצר) פעולה זו תהיה מסובכת יותר מהקודמות. ראשית עלינו למצוא את המוצר שברצוננו לשנות לפי id השתמש ב-productService.findById(); לאחר מכן, במוצר שנמצא (object), החלף את הערך של השדות בערך של השדות של האובייקט שהתקבל בגוף ה-Put request (json_object). ניתן לעשות זאת בצורה כזו:
найденный_товар = productService.findById(id);
найденный_товар.setName(an object_json.getName);
найденный_товар.setPurchasePrice(an object_json.getPurchasePrice);
לאחר מכן, יש לשמור את המוצר שהשתנה productService.save(found_product); השיטה צריכה להחזיר את מצב ה-Http המתאים. אם יש לך בעיות בשיטה זו, אתה יכול לחפש בגוגל "שים בקשה java", אף אחד לא ביטל את האינטרנט עדיין) העבודה עם בקרים לא מסתיימת שם, יש עדיין הרבה נושאים לפני...
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION