9-modul · 2-dars: REST API
Daraja: Ilg'or
REST API. Spring Boot bo‘yicha nazariya, amaliy namuna va mustaqil mashq.
Tushuntirish
## Dars maqsadi REST API tushunchalarini farqlash, nima uchun kerakligini izohlash va kichik misolda qo‘llash.
## Nazariya REST taqsimlangan tizim uchun arxitektura uslubidir: client-server ajratish, stateless request, cacheability, uniform interface, layered system va ixtiyoriy code-on-demand cheklovlari mavjud. Har qanday JSON qaytaruvchi endpoint avtomatik to'liq RESTful emas. Resursni URL, uning ko'rinishini representation ifodalaydi; nomlash va HTTP semantikasini izchil saqlang. GET safe va idempotent o'qish uchun; PUT bir resursni almashtirishga mo'ljallangan va idempotent; DELETE takrorlanganda yakuniy holat bir xil bo'ladi, javob statusi bir xil bo'lishi shart emas. POST odatda idempotent emas. PATCH format va amalga bog'liq. Yaratishda 201 hamda Location, bo'sh muvaffaqiyatda 204, validationda 400 kabi statuslarni maqsadiga mos ishlating. DTO orqali API shartnomasini entitydan ajrating. Pagination, filtering, validation va barqaror error formatini boshidan belgilang. Stateless server umuman DB yoki sessionga o'xshash ma'lumot saqlamaydi degani emas: har requestni tushunish uchun kerakli client konteksti requestning o'zida yetarli bo'lishi kerak. Pul yoki buyurtma kabi amallarda idempotency key alohida dizayndir.
## Manbalar [Moduldagi savollar yo‘nalishi](https://github.com/jlkesh/pdp_online_java_lessons/blob/main/interviewquestions/9-module%28Spring%20Boot%29.md) [Rasmiy qo‘llanma](https://docs.spring.io/spring-boot/reference/)
Kod quyida o‘quv namunasi sifatida berilgan. To‘liq ilova uchun import, dependency va konfiguratsiya kerak bo‘lishi mumkin. SQLni faqat ajratilgan test bazasida bajaring.
Kod misoli
@org.springframework.web.bind.annotation.RestController
class PingController {
@org.springframework.web.bind.annotation.GetMapping("/api/ping")
java.util.Map<String,String> ping() { return java.util.Map.of("status", "ok"); }
}
Keng tarqalgan xatolar
- GET orqali o'chirish amali yaratish browser prefetch va cache sabab kutilmagan zarar keltirishi mumkin.
Mashqlar
- Kundalik CRUD endpointlari uchun method, URL, success va error statuslar jadvalini yozing.
- Bitta resurs uchun to'liq CRUD endpoint yozib, har biriga to'g'ri status kod qaytaring.
Teglar: nazariya, pdp, modul-09