- Published on
iOS da tarmoq qanday ishlaydi
- Authors
- Name
- ShoxruxC
- @iOSdasturchi
Birorta ham tarmoq kodi yozishdan oldin, ilovangiz internet bilan qanday gaplashishini aniq tushunish kerak. Ko'p yangi dasturchilar bu qadamni o'tkazib yuborishadi va keyinchalik kodi noto'g'ri emas, lekin nima qilishi kerakligini tushunishmagan holda chalkashib qolishadi.
Restoran buyurtmasini tasavvur qiling. Menyu ko'rasiz, ofitsiantga nima xohlayotganingizni aytasiz va ofitsiant oshxonaga borib, taomingiz bilan qaytadi. O'zingiz oshxonaga kirib bormaysiz. Taom qanday tayyorlanayotganiga aralashmaysiz. Shunchaki so'rov qilasiz va javob olasiz.
Tarmoq ham xuddi shunday ishlaydi:
- Ilovangiz β buyurtmachi
- Server β oshxona
- API β menyu (nima so'rash mumkinligi ro'yxati)
- URLSession β ofitsiant
So'rov-javob sikli
Ilovangiz β URL ga so'rov yuboradi
Server β so'rovni qabul qiladi va javob jo'natadi
Javob β status kodi + ma'lumot tanasi (JSON)
Ilovangiz β JSON ni o'qib, foydalanuvchiga ko'rsatadi
Bu to'liq sikl: so'rov β javob β dekodlash β ko'rsatish.
JSON nima?
JSON (JavaScript Object Notation) β ma'lumotlarni tasvirlash uchun oddiy matn formati. Nomdagi "JavaScript" so'ziga aldanmang β bu JavaScript bilan bog'liq emas. Bu shunchaki tuzilgan ma'lumotlarni tasvirlash formati.
{
"id": 1,
"title": "Birinchi post",
"body": "Bu post tanasi"
}
[
{ "id": 1, "ism": "Ali" },
{ "id": 2, "ism": "Vali" }
]
API so'rov qilganingizda server odatda JSON javob qaytaradi. Sizning vazifangiz β bu matnni Swift ob'ektlariga aylantirish.
Asosiy atamalar
| Atama | Ta'rif |
|---|---|
| URL | Ilovangiz so'rov qiladigan veb-manzil, masalan https://api.example.com/posts |
| JSON | Ko'pchilik API lar foydalanadigan matn formati β {"kalit": "qiymat"} ko'rinishida |
| Status kodi | Javobdagi raqam: 200 = muvaffaqiyat, 404 = topilmadi, 500 = server xatoligi |
| Endpoint | Ma'lum turdagi ma'lumot qaytaradigan muayyan URL manzili |
| URLSession | Apple ning o'rnatilgan tarmoq qatlami β HTTP so'rovlarini bajaradi |
import SwiftUI
// Bu faqat kontseptsiyani ko'rsatish uchun β haqiqiy tarmoq so'rovi keyingi darsda
struct TarmoqTushunchasi: View {
var body: some View {
VStack(alignment: .leading, spacing: 16) {
Text("So'rov-javob sikli")
.font(.title2)
.bold()
// 1-qadam: URL yaratish
let url = URL(string: "https://jsonplaceholder.typicode.com/posts/1")!
VStack(alignment: .leading, spacing: 8) {
Label("URL: \(url.absoluteString)", systemImage: "link")
.font(.caption)
.foregroundStyle(.blue)
Label("Metod: GET", systemImage: "arrow.up.circle")
.font(.caption)
.foregroundStyle(.green)
Label("Kutilayotgan javob: JSON", systemImage: "doc.text")
.font(.caption)
.foregroundStyle(.orange)
}
.padding()
.background(Color.gray.opacity(0.1))
.clipShape(RoundedRectangle(cornerRadius: 8))
Text("Haqiqiy so'rov uchun keyingi darsga qarang")
.font(.caption)
.foregroundStyle(.secondary)
}
.padding()
}
}
Canvas da tarmoq ishlamaydi
Canvas preview haqiqiy HTTP ulanish qilmaydi. Tarmoq kodini doimo Simulyator yoki haqiqiy qurilma da tekshiring. Canvas da ma'lumot ko'rinmasa β bu normal, simulyatorda ishlatib ko'ring.
Tezkor ma'lumotnoma
| Status kodi | Ma'nosi |
|---|---|
200 | Muvaffaqiyat β ma'lumot keldi |
404 | Topilmadi β URL noto'g'ri yoki resurs yo'q |
401 | Ruxsat yo'q β autentifikatsiya kerak |
500 | Server xatoligi β server tomonida muammo |
π― Topshiriq: siklni kuzating
Brauzeringizni oching va https://jsonplaceholder.typicode.com/posts/1 ga o'ting. Siz hozirgina GET so'rovi qildingiz! Kelgan JSON javobiga qarang va quyidagi savollarga o'zingizcha javob yozing:
- Qaysi URL ga so'rov qildingiz?
- Server qanday ma'lumot qaytardi?
- Blog ilovasi uchun bu ma'lumotni qaysi Swift xususiyatlari bilan ifodalagan bo'lardingiz?