JavaRush /وبلاگ جاوا /Random-FA /بهار ترسناک نیست REST خود را کنترل کنید
Павел
مرحله

بهار ترسناک نیست REST خود را کنترل کنید

در گروه منتشر شد
محتویات چرخه مقالات استفاده مجدد از کار شخص دیگری برای هر توسعه دهنده ای امری مقدس است 😌 برای ادامه کار، باید اصول یک شبکه کامپیوتری را درک کنید، در اینجا یک سری مقاله وجود دارد . به نکات اصلی توجه کنید: HTTP چگونه کار می کند، GET، POST، PUT چیست، وضعیت های پاسخ، MVC، به طور جداگانه در مورد JSON و سریال سازی بخوانید . پیاده سازی مثال پیشنهادی با servlets مفید خواهد بود، این به شما کمک می کند تا با تمام وجود خود بهار بوت را دوست داشته باشید. مثال برنامه Spring-boot از این سری بسیار ساده است، اما به شما کمک می کند تا ماهیت MVC را درک کنید. در زیر پیوندی به یک پروژه جالب تر وجود خواهد داشت. برای آشنایی با REST و کاربرد آن در بهار، این سه مقاله را بخوانید . در مقاله اول خواهید خواند که REST چیست. مقاله دوم در مورد درخواست ها و پاسخ ها صحبت می کند، حتماً نظر رفیق فیدل را بخوانید و توجه داشته باشید. مقاله سوم یک مثال عملی از پیاده سازی در بهار ارائه می دهد، رویکرد ایجاد یک برنامه کاربردی تفاوت چندانی ندارد (نگاه کردن و مقایسه آن مفید است)، آن را پیاده سازی کنید. به مکانی که در مورد HttpStatus، ResponseEntity <?> صحبت می کنند توجه کنید (اگر <?> گیج کننده است، فصل 13 را بخوانید. کلیات از "Java. A Beginner's Guide"، Herbert Shildt)، در همان مقاله که در مورد POSTMAN بخوانید ( علاوه بر این ویدیوی کوتاه در مورد آن ) POSTMAN را نصب کنید، به همه ویژگی ها نیاز ندارید، نحوه ایجاد پرس و جوهای مختلف را ببینید. در مثال عملگرهای سه تایی وجود دارد ، اگر فراموش کردید، حافظه خود را تازه کنید. توجه کنید که مقاله مثال چگونه تزریق لوبیا را با استفاده از @Autowired پیاده سازی می کند
@RestController
public class ClientController {

   private final ClientService clientService;

   @Autowired
   public ClientController(ClientService clientService) {
       this.clientService = clientService;
   }
}
باید توجه داشته باشید که با شروع بهار 4.3، اگر کلاس فقط یک سازنده داشته باشد، می‌توان حاشیه‌نویسی @Autowired را حذف کرد. خود فریم ورک متوجه خواهد شد که یک bean باید در سازنده پیاده سازی شود. ادامه مطلب را می توانید در این منبع بخوانید . و اگر مراقب باشید، پس باید در مورد ساختار بسته خدمات سؤالی داشته باشید، یعنی: چرا یک رابط ClientService و کلاس عمومی 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 دریافت می‌کنند که با رشته مشخص‌شده در براکت‌های حاشیه‌نویسی ("/speculation") شروع می‌شود. متد زیر را در کلاس می نویسیم
@GetMapping("/simple")
public String simple(){
    return "Легкий GET requestик";
}
ما پروژه را راه اندازی می کنیم، در خط مرورگر تایپ می کنیم: http://localhost:8080/speculation/simple پاسخ را دریافت می کنیم: درخواست Easy GET چند توضیح: 1. ما کلاسی ایجاد کردیم که @RestController را به عنوان یک کنترلر علامت گذاری کرد، که نشان دهنده مسیر به آن @RequestMapping ("/ حدس و گمان") - این حاشیه نویسی اختیاری است؛ بدون آن، مسیر با "/" شروع می شود. 2. ما متدی ایجاد کردیم که پس از اجرا، یک رشته را برمی گرداند (درخواست Light GET)، آن را با حاشیه نویسی GetMapping@ علامت گذاری کردیم (که این روش به طور خاص برای درخواست های GET است) و مسیر متد ("/simple") را نشان می دهد. 3. ما پروژه (سرور) را در پورت 8080 راه اندازی کردیم و یک درخواست GET به آدرس: server/controller/method (http://localhost:8080/speculation/simple) 4. عمومی String simple(){ return روش "Easy GET درخواست کننده" برای این درخواست کار می کند. } 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) حذف یک محصول با شناسه برای این کار، ابتدا متدی حاوی productRepository.deleteById(); و سپس از آن در کنترلر استفاده کنید. متد کنترلر باید وضعیت Http مناسب را برگرداند. 5) تغییرات محصول بر اساس شناسه (تغییر قیمت عمده کالا و نام محصول) این عملیات پیچیده تر از موارد قبلی خواهد بود. ابتدا باید محصولی را که می خواهیم با شناسه تغییر دهیم پیدا کنیم Use productService.findById(); سپس در محصول یافت شده (object) مقدار فیلدها را با مقدار فیلدهای شی دریافت شده در بدنه درخواست Put (json_object) جایگزین کنید.
найденный_товар = productService.findById(id);
найденный_товар.setName(an object_json.getName);
найденный_товар.setPurchasePrice(an object_json.getPurchasePrice);
پس از این، محصول تغییر یافته باید ذخیره شود productService.save(found_product); متد باید وضعیت Http مربوطه را برگرداند. اگر با این روش مشکل دارید، می توانید "put request java" را در گوگل جستجو کنید، هنوز کسی اینترنت را لغو نکرده است) کار با کنترلرها به همین جا ختم نمی شود، هنوز موضوعات زیادی در پیش است ...
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION