Published on

iOS da tarmoq qanday ishlaydi

Authors

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

AtamaTa'rif
URLIlovangiz so'rov qiladigan veb-manzil, masalan https://api.example.com/posts
JSONKo'pchilik API lar foydalanadigan matn formati β€” {"kalit": "qiymat"} ko'rinishida
Status kodiJavobdagi raqam: 200 = muvaffaqiyat, 404 = topilmadi, 500 = server xatoligi
EndpointMa'lum turdagi ma'lumot qaytaradigan muayyan URL manzili
URLSessionApple 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 kodiMa'nosi
200Muvaffaqiyat β€” ma'lumot keldi
404Topilmadi β€” URL noto'g'ri yoki resurs yo'q
401Ruxsat yo'q β€” autentifikatsiya kerak
500Server 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:

  1. Qaysi URL ga so'rov qildingiz?
  2. Server qanday ma'lumot qaytardi?
  3. Blog ilovasi uchun bu ma'lumotni qaysi Swift xususiyatlari bilan ifodalagan bo'lardingiz?
Buy mea coffee