Loyihalash andozalari: Observer va hodisalar arxitekturasi
Bitta voqea, ko'p javob beruvchi: Observer yordamida «buyurtma yakunlandi» signalini kuzatuvchilarga tarqatamiz va kod bir-biriga bog'lanib qolishining oldini olamiz.
Haftada 3 ta dars. Slaydlarni oching va darsning o'quvchi sahifasida qo'shimcha ma'lumot hamda topshiriqlarni toping.
Bitta voqea, ko'p javob beruvchi: Observer yordamida «buyurtma yakunlandi» signalini kuzatuvchilarga tarqatamiz va kod bir-biriga bog'lanib qolishining oldini olamiz.
Har bir ilova serverdan ma'lumotni bir xil tilda so'raydi: HTTP. Bugun kutubxona uchun o'z REST API'ngizni yozib, curl bilan chaqirasiz.
API ning yuragi: JSON kontrakti. Maydonlar nomi, xato formati va xavfsizlik qoidalari bo'yicha mijoz va server o'rtasida «kelishuv» tuzamiz.
Har bir vazifa 20–30 daqiqa. Parol, shaxsiy token, maxfiy kalit va shaxsiy ma'lumotlarni repozitoriyga yozmang: topshirishda faqat ochiq GitHub repo yoki Pull Request havolasi kerak.
1-topshiriq: «Kutubxona EventBus tizimi»
feature/observer-eventbus tarmog'ini oching.library_events.py faylida markaziy EventBus sinfini e'lon qiling (subscribe, unsubscribe, publish).book:borrowed hodisasi uchun ikkita kuzatuvchi yarating: AuditLogger — berilgan kitob va o'quvchi ma'lumotlarini logs/library.log fayliga qo'shadi;StudentNotifier — qaytarish muddatini hisoblab terminalga xabar chiqaradi.test_events.py faylida unittest.mock.MagicMock yordamida publish chaqirilganda barcha kuzatuvchilar ishga tushishini tekshiruvchi 2 ta unit test yozing.Kutiladigan natija: bo'sh bog'langan, OCP talablariga mos, testlangan EventBus kodi.
Topshirish: GitHub commit yoki fayl havolasi.
2-topshiriq: «REST API URI loyihasi va curl sinovlari»
docs/api_design.md faylida «Kutubxona boshqaruvi» tizimi uchun RESTful endpointlar jadvalini tuzing: GET /api/v1/books), yangi kitob qo'shish (POST), ID bo'yicha olish (GET /api/v1/books/{id}), o'chirish (DELETE);test_api.sh nomli skript fayl tuzib, unga ushbu endpointlarni sinovdan o'tkazuvchi kamida 4 ta curl buyrug'ini yozing (-X, -H "Content-Type: application/json", -d, -v bayroqlari bilan).Kutiladigan natija: to'g'ri loyihalangan RESTful URI hujjati va terminalda ishlovchi curl sinov skripti.
Topshirish: docs/api_design.md va test_api.sh havolasi.
3-topshiriq: «JSON Kontrakt, Error Envelope va DTO xavfsizligi»
contracts.py faylida quyidagi qoidalarga mos keluvchi JSON serializatsiya funksiyalarini yozing: Error Envelope): {"error": {"code": "...", "message": "...", "details": [...]}} qaytaruvchi make_error_response() funksiyasi;make_paginated_response(data, limit, offset, total) funksiyasi (data va meta bo'limlari bilan);password_hash, token, secret_key maydonlarini olib tashlab, sanalarni ISO-8601 UTC formatiga o'tkazuvchi sanitize_user() funksiyasi.test_contracts.py faylida har uchala funksiyani pytest yoki assert bilan tekshiruvchi testlar yozing.main tarmog'iga Pull Request qilib yuboring.Kutiladigan natija: xalqaro standartlarga mos, xavfsiz JSON kontrakt moduli va yashil unit testlar.
Topshirish: GitHub Pull Request havolasi.