Müştəri serverdən resurs istəyən tərəfdir; brauzer müştəri ola bilər. Server sorğunu emal edib cavab qaytarır. Server uzaq məlumat mərkəzində də, öz kompüterində də işləyə bilər. HTTP bu əlaqənin protokoludur; HTTPS ötürülməni TLS ilə qoruyur.
Sorğuda metod, URL, başlıqlar və bəzən gövdə olur. Cavabda status, başlıqlar və gövdə var. GET adətən oxuyur, POST yaradır, PUT təqdimatı yeniləyir, DELETE silir. Dəqiq davranışı xidmətin sənədi müəyyən edir.
JSON mətn formatıdır: açarlar və sətirlər ikiqat dırnaqla yazılır, şərh və son əlavə vergül qəbul etmir. Funksiya və undefined JSON məlumat tipi deyil. JavaScript obyekti ilə JSON mətnini qarışdırma.
1xx məlumat, 2xx uğur, 3xx yönləndirmə, 4xx sorğu ilə bağlı, 5xx serverlə bağlı vəziyyətləri göstərir. 200 uğur, 201 yaradılma, 204 gövdəsiz uğur, 400 yanlış sorğu, 401 identifikasiya tələbi, 403 icazəsizlik, 404 tapılmama və 500 server xətasıdır. Network panelində bir sorğunun bu hissələrini tap.
Əlavə qeydlər və mənbələr
Müştəri sorğu göndərir, server status, başlıqlar və gövdə ilə cavab verir. HTTP metodlarını və status qruplarını ayır; JSON mətnini parse ilə obyektə, stringify ilə mətnə çevir.
Niyə vacibdir?
API tətbiqlərin bir-biri ilə məlumat mübadiləsi aparması üçün razılaşdırılmış interfeysdir.
fetch şəbəkə xətasında rədd edilə bilər, amma HTTP 404 və 500 cavabları üçün ayrıca status yoxlamaq lazımdır. JSON oxumaq da asinxron əməliyyatdır.
async function loadProducts() {
const response = await fetch('/products.json');
if (!response.ok) throw new Error('Məlumat yüklənmədi');
return response.json();
}
Nümunə
Bu funksiyanı çağıran hissədə try/catch ilə xətanı tut və istifadəçiyə mesaj göstər. JSON-un gözlənilən quruluşda olduğunu ayrıca yoxla. Frontend koduna gizli API açarları yerləşdirmə: brauzerə göndərilən kod görünür.
JSON, resurslar və sorğu parametrləri
HTTP cavabı status, başlıqlar və gövdədən ibarətdir. 2xx uğurlu cavabları, 4xx müştəri sorğusu ilə bağlı, 5xx serverlə bağlı xətaları bildirir. HTTPS bağlantını TLS ilə qoruyur. JSON mətn formatıdır: JSON.parse onu dəyərə, JSON.stringify dəyəri JSON mətninə çevirir.
API sənədindən endpoint-i, metodu, gözlənilən parametrləri və cavab quruluşunu oxu. Swagger kimi təsvirlər bu müqaviləni araşdırmağa kömək edir. Sorğu parametrini əl ilə birləşdirmək əvəzinə kodlaşdırılmış URL qur:
POST adətən yeni resurs yaradır, PUT resursu verilmiş təqdimatla yeniləyir, DELETE silir. Dəqiq davranışı API müqaviləsindən yoxla. JSON göndərərkən başlıq və gövdə uyğun olmalıdır.
Bu kod /api/products endpoint-i olan ayrıca təlim serverini fərz edir; roadmap.az özü API təqdim etmir. DELETE cavabı gövdəsiz ola bilər: belə cavabı avtomatik JSON kimi oxuma. Tokenin göndərilmə qaydasını API sənədindən götür. Əvvəlki nümunə açarları və başqasına aid tokenləri istifadə etmə.
Promise, taymerlər və paralel sorğular
Promise gözlənilən əməliyyatın nəticəsini təmsil edir: pending, fulfilled və ya rejected. then nəticəni, catch xətanı emal edir; async/await eyni modeli ardıcıl görünən sintaksislə ifadə edir.
const delay = milliseconds => new Promise(resolve => {
setTimeout(resolve, milliseconds);
});
async function loadTogether() {
const results = await Promise.all([
fetch('/products.json').then(readJSON),
fetch('/categories.json').then(readJSON)
]);
return results;
}
function readJSON(response) {
if (!response.ok) throw new Error(`HTTP ${response.status}`);
return response.json();
}
Nümunə
Promise.all nəticələri giriş sırası ilə qaytarır; biri rədd edilərsə ümumi Promise rədd edilir, digər əməliyyatlar avtomatik ləğv olunmur. setInterval təkrar işi planlayır; lazım olmadıqda clearInterval ilə dayandır. Taymerin gecikməsi dəqiq icra anına zəmanət vermir.
Mövzu üzrə praktika
Layihəndə products.json faylı yarat və fetch ilə oxu. Məhsul kartları göstər; fayl tapılmayanda anlaşılan xəta mesajı çıxar.
response.ok yoxlanılır, yüklənmə göstəricisi var və sorğu uğursuz olduqda səhifə çökmür.
Mövzunun yoxlama siyahısı
GET və POST sorğularını fərqləndir
JSON məlumatını oxu
async/await və fetch istifadə et
Yüklənmə, boş nəticə və xəta vəziyyətlərini göstər