JavaRush /Java blogi /Random-UZ /Bahor qo'rqinchli emas. RESTni boshqarish

Bahor qo'rqinchli emas. RESTni boshqarish

Guruhda nashr etilgan
MAQOLALAR SIKLINING MAZMUNI Birovning ishidan qayta foydalanish har qanday ishlab chiquvchi uchun muqaddas masala 😌 Davom etish uchun kompyuter tarmog‘i asoslarini tushunishingiz kerak, bu yerda maqolalar turkumi . Asosiy fikrlarga e'tibor bering: HTTP qanday ishlaydi, GET, POST, PUT nima, javob holatlari, MVC, JSON va serializatsiya haqida alohida o'qing . Taklif etilgan misolni servletlar bilan amalga oshirish foydali bo'ladi, bu sizga bahor-bootni butun qalbingiz bilan sevishga yordam beradi. Ushbu seriyadagi bahor-boot ilovasining misoli juda oddiy, ammo u MVC mohiyatini tushunishga yordam beradi. Quyida qiziqarliroq loyihaga havola bo'ladi. REST va uning bahorda ishlatilishi bilan tanishish uchun ushbu uchta maqolani o'qing . Birinchi maqolada siz REST nima ekanligini o'qiysiz. Ikkinchi maqolada so'rovlar va javoblar haqida so'z boradi, o'rtoq Fidelning sharhini o'qib chiqing va e'tiborga oling. Uchinchi maqola bahorda amalga oshirishning amaliy misolini taklif qiladi, dasturni yaratish yondashuvi unchalik farq qilmaydi (ko'rish va taqqoslash foydali), uni amalga oshirish. Ular HttpStatus, ResponseEntity <?> haqida gapiradigan joyga e'tibor bering (agar <?> chalkash bo'lsa, 13-bobni o'qing. "Java. Yangi boshlanuvchilar uchun qo'llanma" dan umumlashtirishlar, Gerbert Shildt), xuddi shu maqolada POSTMAN ( qo'shimcha ravishda bu haqda qisqa video ) POSTMAN-ni o'rnating, sizga barcha funktsiyalar kerak emas, turli so'rovlarni qanday yaratishni ko'ring. Misolda uchlik operatorlar mavjud , agar unutgan bo'lsangiz, xotirangizni yangilang. Misol maqolasi @Autowired yordamida loviya in'ektsiyasini qanday amalga oshirishiga e'tibor bering
@RestController
public class ClientController {

   private final ClientService clientService;

   @Autowired
   public ClientController(ClientService clientService) {
       this.clientService = clientService;
   }
}
Shuni yodda tutingki, Spring 4.3 dan boshlab, agar sinfda faqat bitta konstruktor bo'lsa, @Autowired izohini o'tkazib yuborish mumkin. Ramkaning o'zi fasolni konstruktorda amalga oshirish kerakligini aniqlaydi. Batafsil ushbu manbada o'qishingiz mumkin . Va agar ehtiyot bo'lsangiz, unda sizda xizmat paketining tuzilishi haqida savol bo'lishi kerak, ya'ni: nima uchun ClientService interfeysi va ClientServiceImpl umumiy sinfi mavjud - bu to'g'ri amaliyot, keyinroq nima uchun kerakligi haqida gaplashamiz va biz undan foydalanadi. Hammasi maqolalar bilan. O'qishdan oldin, yozaylik. Ular aytganidek: "Kodsiz kun emas!" Boshlanish nuqtasi sifatida oddiy GET so'rovini yarataylik. Oxirgi marta biz sabzavot spekulyatsiyasi uchun ariza yozgan edik, git clone https://FromJava@bitbucket.org/FromJava/speculation.git git clone git@bitbucket.org:FromJava/speculation.git Ilovani oching va ru paketida. java.rush biz kontrollerlar paketini yaratamiz (MVC naqshidagi kontrollerlar shu erda joylashgan bo'ladi). ProductController umumiy sinfini yarating
@RestController
@RequestMapping("/speculation")
public class ProductController {

}
@RestController izohi Springga bu dam olish boshqaruvchisi ekanligini bildiradi. @RequestMapping - Barcha kontroller usullari izoh qavslarida ("/speculation") ko'rsatilgan satr bilan boshlanadigan URI bilan so'rovlarni qabul qiladi. Biz sinfda quyidagi usulni yozamiz
@GetMapping("/simple")
public String simple(){
    return "Легкий GET requestик";
}
Biz loyihani ishga tushiramiz, brauzer qatoriga yozamiz: http://localhost:8080/speculation/simple Javobni olamiz: Easy GET so'rovi Bir nechta tushuntirishlar: 1. Biz @RestController ni kontroller sifatida belgilagan sinf yaratdik, unga yo'l @RequestMapping ("/ chayqovchilik") - bu izoh ixtiyoriy; usiz yo'l "/" bilan boshlanadi. 2. Biz bajarilganda satrni (Light GET so'rovi) qaytaradigan, uni @GetMapping izohi bilan belgilagan (bu usul GET so'rovlari uchun maxsus) va usulga yo'lni ko'rsatadigan ("/oddiy") usul yaratdik. 3. Loyihani (serverni) 8080 portida ishga tushirdik va server/controller/method (http://localhost:8080/speculation/simple) manziliga GET so‘rovini yubordik 4. Ommaviy String simple(){ qaytish Ushbu so'rov uchun "Easy GET so'rovchisi" usuli ishlagan; } 5. Usul natijasi brauzerga “Easy GET so'rovi” qatori ko'rinishida qaytarildi. Xo'sh, bu boshlanish! Sizni eng qiziqarli maqolalar kutmoqda. Yuqorida taklif qilingan materialni o'zlashtirish bir kundan ko'proq vaqtni oladi, bu erda shoshilishning hojati yo'q, bu mavzu juda muhim va tushunish kerak, "filni qismlarga bo'lib yeyish". O'qitish uchun (materialni o'zlashtirgandan so'ng): Spekulyatsiyani qo'llash nazoratchisini to'ldiring . Usullarni yaratish: 1) Mahsulotni id bo'yicha qidiring productService.findById() usulidan foydalaning; Chiqish misoli
{
        "id": 1,
        "name": "Картофель",
        "purchasePrice": 20,
        "packaging": null,
        "salePrice": null
 }
Boshqaruvning qolgan usullarini qo'llaganingizdan so'ng, o'ylab ko'ring: "Nega oxirgi ikkita maydon nol? U erda qandaydir qiymatlar bo'lishi uchun nima qilish kerak?" 2) Vitrinadagi barcha mahsulotlarni ko‘rish: Barcha mahsulotlarni qidirish uchun productService.findAll() usulidan foydalaning; Qadoqlash va belgilash maydonlarini to'ldirish uchun productService.pack(); productService.makeMoney(); Chiqishda JSON qatori ro'yxatdagi mahsulotlar bo'lishi kerak, masalan:
[
    {
        "id": 1,
        "name": "Картофель",
        "purchasePrice": 20,
        "packaging": "Упаковано в лучшем виде",
        "salePrice": 100
    },
    {
        "id": 2,
        "name": "Морковь",
        "purchasePrice": 14,
        "packaging": "Упаковано в лучшем виде",
        "salePrice": 70
    }
]
3) Ma'lumotlar bazasiga yangi mahsulotni qo'shish (mahsulotni qo'shing: karam va ulgurji xarid narxi) Foydalanish: productService.save(); Usul mos keladigan Http holatini qaytarishi kerak. 4) Mahsulotni id bo'yicha o'chirish Buning uchun avvalo ProductService'da productRepository.deleteById ( ); Va keyin uni boshqaruvchida foydalaning. Tekshirish usuli tegishli Http holatini qaytarishi kerak. 5) Id bo'yicha mahsulotning o'zgarishi (mahsulotning ulgurji narxining o'zgarishi va mahsulot nomi) Bu operatsiya avvalgilariga qaraganda ancha murakkab bo'ladi. Avval id bo'yicha o'zgartirmoqchi bo'lgan mahsulotni topishimiz kerak productService.findById(); Keyin topilgan mahsulotda (ob'ektda) maydonlar qiymatini Put so'rovi (json_object) tanasida qabul qilingan ob'ekt maydonlari qiymati bilan almashtiring.Buni shunday qilish mumkin:
найденный_товар = productService.findById(id);
найденный_товар.setName(an object_json.getName);
найденный_товар.setPurchasePrice(an object_json.getPurchasePrice);
Shundan so'ng, o'zgartirilgan mahsulot saqlanishi kerak productService.save(found_mahsulot); Usul mos keladigan Http holatini qaytarishi kerak. Agar sizda bu usulda muammo bo'lsa google dan "put request java" ga kirishingiz mumkin, hali hech kim Internetni bekor qilmagan) Kontrollerlar bilan ishlash shu bilan tugamaydi, oldinda hali ko'p mavzular bor...
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION