Məzmuna keç

HTTP status kodları

Hər HTTP cavabı necə getdiyini bildirən 3 rəqəmli status kodu ilə başlayır. Tester kimi bu çox vaxt ilk yoxladığınız şeydir — düzgün status endpoint-in necə davrandığının ən sürətli siqnalıdır. Bu səhifə istinaddır: sinifləri gözdən keçirin, sonra cədvəlləri əlinizin altında saxlayın.

İlk rəqəm kateqoriyanı bildirir:

AralıqSinifBir sətirdə mənası
1xxİnformasiya”Aldım, hələ işləyirəm.” (testlərdə nadir)
2xxUğur”İşlədi.”
3xxYönləndirmə”Başqa yerə bax.”
4xxKlient xətasıSən yanlış nəsə göndərdin.”
5xxServer xətasıMən sındım.”

Ən çox yoxladığınız ikisi 2xx (nəzərdə tutduğunuz kimi işlədi) və 4xx (tətbiq yanlış girişi düzgün rədd etdi). Testdə 5xx adətən real xəta deməkdir.

Ən çox görəcəyiniz kodlar

Bölmə: “Ən çox görəcəyiniz kodlar”

Yalnız bir neçəsini əzbərləyəcəksinizsə, bunları əzbərləyin:

KodAdNə zaman görürsünüz
200OKUğurlu GET (və ya məlumat qaytaran istənilən sorğu).
201CreatedPOST resursu uğurla yaratdı.
204No ContentUğur, amma qaytarılacaq gövdə yoxdur (çox vaxt DELETE).
301 / 302Moved / FoundBaşqa URL-ə yönləndirmə.
400Bad RequestGiriş səhv formada idi və ya doğrulamadan keçmədi.
401UnauthorizedDaxil olmamısınız / etibarlı kimlik məlumatı yoxdur.
403ForbiddenDaxil olmusunuz, amma bunu etməyə icazəniz yoxdur.
404Not FoundResurs mövcud deyil.
409ConflictCari vəziyyətlə toqquşur (məs., təkrar email).
422Unprocessable EntitySintaktik düzgün, amma semantik etibarsız.
500Internal Server ErrorServer idarə olunmayan xəta atdı.

401 vs 403 — klassik qarışıqlıq

Bölmə: “401 vs 403 — klassik qarışıqlıq”
  • 401 Unauthorized = “Sən kimsən?” — autentifikasiya olunmamısınız. Əvvəlcə daxil olun.
  • 403 Forbidden = “Kim olduğunu bilirəm, və xeyr.” — autentifikasiya olunmusunuz, amma icazəniz yoxdur.

Sistemdən çıxmış istifadəçi admin səhifəsinə girəndə 401 alır; daxil olmuş müştəri yalnız-admin API-yə girəndə 403 alır.

KodAdQeydlər
200OKStandart uğur. Gövdə nəticəni saxlayır.
201CreatedYeni resurs yaradıldı; gövdə adətən yeni resursdur, bəzən Location başlığı ilə.
202AcceptedSorğu qəbul edildi, amma emal sonra baş verir (asinxron işlər).
204No ContentBoş gövdə ilə uğur. DELETE və bəzi PUT-lar üçün adidir.
KodAdQeydlər
301Moved PermanentlyResurs həmişəlik yeni URL-də yaşayır — linklərinizi yeniləyin.
302FoundMüvəqqəti yönləndirmə. Forma POST-undan sonra tətbiqlər çox vaxt buraya yönləndirir.
304Not ModifiedKeşlənmiş nüsxəniz hələ təzədir; server gövdə göndərmədi.
307 / 308Temporary / Permanent Redirect302/301 kimi, amma metod dəyişməməlidir.

Bir çox brauzer/test klienti yönləndirmələri avtomatik izləyir, ona görə aradakı 3xx-i fərq etmədən son səhifəyə düşə bilərsiniz. Məsələn, TestMarket Lab uğurlu girişdən sonra və ödənişdən sonra yönləndirir.

4xx — Klient xətaları (sən yanlış nəsə göndərdin)

Bölmə: “4xx — Klient xətaları (sən yanlış nəsə göndərdin)”
KodAdQeydlər
400Bad RequestSəhv formalı sorğu və ya doğrulama uğursuzluğu (məs., çatışmayan tələb olunan sahə).
401UnauthorizedAutentifikasiya olunmayıb — kimlik məlumatı çatışmır/etibarsızdır.
403ForbiddenAutentifikasiya olunub, amma icazə yoxdur.
404Not FoundBu URL-də belə resurs yoxdur.
405Method Not AllowedURL mövcuddur, amma bu metod üçün deyil (məs., yalnız GET olan yerdə DELETE).
409ConflictCari vəziyyətlə toqquşur — təkrar email, versiya münaqişəsi.
422Unprocessable EntityDüzgün formalı, amma semantik etibarsız; doğrulama-ağırlıqlı API-lərdə adidir.
429Too Many RequestsSürət məhdudiyyəti — çox sürətli çox sorğu göndərmisiniz.

5xx — Server xətaları (server sındı)

Bölmə: “5xx — Server xətaları (server sındı)”
KodAdQeydlər
500Internal Server ErrorServerdə idarə olunmayan istisna. Testlərdə adətən bildirilməli real xətadır.
502Bad GatewayProxy/gateway yuxarı serverdən etibarsız cavab aldı.
503Service UnavailableServer işləmir və ya həddən artıq yüklənib (deploy, texniki xidmət).
504Gateway TimeoutYuxarı server vaxtında cavab vermədi.

TestMarket Lab onları necə istifadə edir

Bölmə: “TestMarket Lab onları necə istifadə edir”

Məşq tətbiqi bunları təmiz şəkildə uyğunlaşdırır — iddialar yazanda faydalıdır:

ƏməliyyatStatus
GET /api/products200
POST /api/products (etibarlı)201
POST /api/products (ad/qiymət çatışmır)400
POST /api/auth/login (yanlış parol)401
POST /api/auth/register (email artıq mövcuddur)409
GET /api/products/99999 (belə id yoxdur)404
POST /api/orders (boş items)400

Playwright-da status kodlarını yoxlamaq

Bölmə: “Playwright-da status kodlarını yoxlamaq”

Playwright-ın cavab obyekti status-u birbaşa təqdim edir:

const res = await request.post('/api/products', {
data: { name: 'Keyboard', price: 49.99 },
});
expect(res.status()).toBe(201); // dəqiq kod
expect(res.ok()).toBeTruthy(); // istənilən 2xx üçün true

Həmişə status-u və gövdəni birlikdə yoxlayın — sınıq endpoint içəridə xəta mesajı ilə 200 qaytara bilər və tək status bunu tutmaz:

const res = await request.get('/api/products/1');
expect(res.status()).toBe(200);
const body = await res.json();
expect(body).toHaveProperty('id', 1);

Bu, Modul 9 boyu istifadə olunan məhz həmin nümunədir.