10-modul · 10-dars: GraphQL
Daraja: Ilg'or
GraphQL. Advanced backend bo‘yicha nazariya, amaliy namuna va mustaqil mashq.
Tushuntirish
## Dars maqsadi GraphQL tushunchalarini farqlash, nima uchun kerakligini izohlash va kichik misolda qo‘llash.
## Nazariya GraphQL clientga typed schema bo'yicha kerakli fieldlarni tanlab so'rash imkonini beradi. SDL type, field, argument va nullabilityni ifodalaydi; query bajarilishidan oldin schema bilan validate qilinadi. String! null bo'lmasligini bildiradi. GraphiQL so'rov yuborish uchun interaktiv muhit, GraphQL serverning o'zi emas. Root operationlar Query o'qish, Mutation o'zgartirish, Subscription esa hodisalarni kuzatish uchun. Spring GraphQL @SchemaMapping ma'lum type/field resolverni, @QueryMapping va @MutationMapping tegishli root uchun qulay qisqa annotationlarni beradi. Field resolverning default mappingi va custom mappingi o'rtasidagi farqni biling. RESTdagi over-fetching yoki bir nechta request muammolarida GraphQL yordam berishi mumkin, lekin har loyiha uchun majburiy emas. Resolverlar N+1 query yaratishi mumkin; batching/DataLoader, pagination va query complexity/depth limitlari kerak. Har field/obyekt uchun authorization saqlansin. Response 200 bo'lsa ham errors bo'lishi mumkin; client data va errorsni birga tekshiradi. Cache va monitoring RESTdagidan boshqacha rejalashtiriladi.
## Manbalar [Moduldagi savollar yo‘nalishi](https://github.com/jlkesh/pdp_online_java_lessons/blob/main/interviewquestions/10-module%28Spring%20Boot%20Part%20%7C%7C%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
# schema.graphqls
type Query { topic(id: ID!): Topic }
type Topic { id: ID!, title: String! }
# Client so'rovi:
# query { topic(id: "42") { title } }
Keng tarqalgan xatolar
- Faqat bitta /graphql URLni authenticated qilish barcha field va obyektlarga yetarli authorization bermaydi.
Mashqlar
- Topic bilan comments so'rovi uchun SQL sonini o'lchang; chuqurlik limiti va begona user's fieldini test qiling.
- GraphQL so'rovida field darajasidagi avtorizatsiyani sinab ko'ring.
Teglar: nazariya, modul-10, pdp