GET API: Yo'q tarkib: 404 va 204 vs 200

Agar so'ralgan manba mavjud bo'lmasa, HTTP javobi sizning REST API sizga qanday kelishi kerak. Masalan, xodimni olish uchun quyidagi API-ni ko'rib chiqing

Http://yourservice.com/api/v1/employees/1 ga kiring
Javob sarlavhasi: 200
Tanasi: {
           "name": "Santhosh",
           "kafedra": "muhandislik"
      }

Agar so'ralgan xodim mavjud bo'lmasa

Http://yourservice.com/api/v1/employees/2 ga tashrif buyuring
Javob sarlavhasi: ???
Tana: ???

Uchta tanlov mavjud; 404, 204 va 200. Uchchalasi tashqi ko'rinish uchun mos. Ularning eng yaxshisini tanlash maqsadi bilan batafsil ko'rib chiqaylik. Boshlaylik

404 topilmadi

HTTP holat kodini aniqlash uchun…

"Serverda so'rov-URI-ga mos keladigan narsa topilmadi. Vaziyat vaqtincha yoki doimiy ekanligi haqida hech qanday ma'lumot berilmagan. Agar server ba'zi ichki tuzatiladigan mexanizm orqali eski manba doimiy ravishda mavjud emasligini va yo'naltirish manzili bo'lmaganligini bilsa, 410 (Gone) holat kodidan foydalanish kerak. Ushbu holat kodi, odatda server nima uchun rad etilganligini aniq ko'rsatishni istamaganda yoki boshqa javob talab qilinmasa ishlatiladi. ”

Birinchi bayon ish uchun mukammal ma'noga ega. Ammo oldin o'qiyotganingizda, 404 quyidagi sabablarga ko'ra to'g'ri tanlov emasligi aniq

  • Kod manba doimiy ravishda mavjud bo'lmaganda ishlatiladi, bu erda bunday emas.
  • Server aniq sababni yashirishni xohlamaydi.
  • 404 dan foydalanmaslikning uchinchi sababi bor; 4xx seriyasi mijozning xatolarini signal qilish uchun mo'ljallangan. Ammo dam olish manbasi mavjud emasligi xato emas. Uning vaqtinchalik holati.

Qolgan ikkala nomzod ham 2xx toifasiga kiradi.

"Ushbu status kodi mijozning so'rovi muvaffaqiyatli qabul qilinganligini, tushunilgan va qabul qilinganligini anglatadi."

Ha! bu ish uchun mantiqiy. Shunday qilib, ushbu xato kodlaridan biri 404 bilan taqqoslaganda yaxshiroq tanlov bo'lishi kerak.

204 Tarkibsiz

HTTP holat kodini aniqlash uchun…

Server so'rovni bajardi, lekin ob'ekt tanasini qaytarishi shart emas va yangilangan meta ma'lumotlarini qaytarishni xohlashi mumkin. MAY javobi yangi yoki yangilangan meta ma'lumotlarini sub-mavzular shaklida o'z ichiga oladi, agar mavjud bo'lsa, so'ralgan variant bilan bog'lanishi kerak.
Agar mijoz foydalanuvchi agenti bo'lsa, u hujjat ko'rinishini so'rov yuborilganidan o'zgartirishi shart emas. Ushbu javob birinchi navbatda, foydalanuvchi agenti faol ko'rinishda bo'lgan har qanday yangi yoki yangilangan meta ma'lumotlarini hujjat uchun qo'llash kerak bo'lsa-da, foydalanuvchi agenti faol hujjat ko'rinishini o'zgartirmasdan harakatlar amalga oshirilishiga imkon beradi.
204 javobi xabarning asosiy qismini o'z ichiga olmaydi, shuning uchun har doim sarlavha maydonlaridan keyin birinchi bo'sh qator bilan tugatiladi.

204 to'g'ri nomzodga o'xshaydi, chunki uning qisqa shakli "Tarkibga ega emas". Ammo siz ta'rifni o'rganayotganda, serverda biron bir harakat sodir bo'lganda, 204 ideal ekanligi to'rtinchi bayonotdan (qalin matn) ayon bo'ladi. ya'ni POST, PUT yoki DELETE; Ammo mijoz GET so'rovini chaqirganda, bunday emas.

Bizda eng ko'p ishlatiladigan 200 OK qoladi

200 OK {bo'sh tanasi bilan}

Http Status code ta'rifiga muvofiq

So‘rov amalga oshdi. Javob bilan qaytarilgan ma'lumotlar so'rovda ishlatiladigan usulga bog'liq, masalan:
Javobda so'ralgan manbaga mos keladigan ob'ekt yuboriladi; ….

Server bo'sh jism bilan 200 ni qaytarganda, uni "so'rov muvaffaqiyatli amalga oshirildi, ammo resurs bo'sh" deb talqin qilish mumkin. HTTP standartlari buzilmagan bo'lsa ham, bu biroz xiralashgan ko'rinadi. Ammo boshqa tanlovlarni hisobga olsak, quyidagi sabablarga ko'ra bu yaxshiroq variant.

  • Bu serverning umumiy harakatlariga mos keladi.
  • Mijoz kodi boshqa HTTP javob kodini ishlatmasligi kerak.

Xulosa

Agar REST GET API so'rovida tarkib yo'q bo'lsa, bo'sh tanasi bo'lgan 200 - bu eng yaxshi javob tanlovi.

Http://yourservice.com/api/v1/employees/2 ga tashrif buyuring
Javob sarlavhasi: 200
Tanasi: {}