Bilmeniz gereken HTTP Durum Kodları
Tags: webdev, frontend, beginners, tutorial
Published: 2023-04-08 15:42:44

Merhaba,

Bir istemci bir sunucuya istek gönderdiğinde, yanıt her zaman bir durum kodu içerir. Bunu her zaman göremeyebilirsiniz ama her işlemci-sunucu etkileşiminde bu durum kodları döndürülür. Bir programcı olmasak bile 404 Sayfa bulunamadı hatasını bir çoğumuz bilmektedir.

Bu yazımda , HTTP ve durum kodları hakkında öğrendiklerimi ve araştırmalarımı sizinle paylaşacağım.

**Bu yazı neler anlatıyor.**


> 1. HTTP nedir ?
> 2. Durum kodu nedir ?
> 3. 1XX - Bilgilendirme yanıtları(Informational Response)
> 4. 2XX - Başarı işlem yanıtları(Success)
> 5. 3XX - Yönlendirme mesajları(Redirection)
> 6. 4XX - İşlemci hatası mesajları(Client errors)
> 7. 5XX - Sunucu hatası mesajları(Server errors)


## HTTP nedir ?
“Hyper Text Transfer Protocol” ifadesinin kısaltması olan HTTP, Türkçede kendine “Köprü Metni Aktarım Protokolü” ya da “Hiper Metin Transfer Protokolü” şeklinde karşılık bulur. Evrensel kullanımı HTTP şeklindedir ve web üzerindeki mesajların, biçim ve gönderim şeklini tanımlayan standart bir protokoldür.

## Durum kodu nedir ?
HTTP durum kodları, sunucuların istemcilere döndürdüğü yanıtların başarısını veya başarısızlığını belirleyen üç haneli sayısal kodlardır. Her durum kodu belirli bir anlam taşır ve belirli bir yanıt türünü ifade eder.

Temel olarak beş standart grup vardır. Bunlar aşağıdaki gibidir:
 1. 1XX - Bilgilendirme yanıtları(Informational Response)
 2. 2XX - Başarı işlem yanıtları(Success)
 3. 3XX - Yönlendirme mesajları(Redirection)
 4. 4XX - İşlemci hatası mesajları(Client errors)
 5. 5XX - Sunucu hatası mesajları(Server errors)

Her gruba kısaca bir göz atalım.

## 1XX — Informational Response
Bilgilendirici bir yanıt, isteğin alındığını ve anlaşıldığını gösterir. Talep işleme devam ederken geçici olarak verilir.

**100 Continue:** İstemci, isteğine devam edebilir. Sunucu, isteği kabul etti ve isteğin devamını bekliyor.

**101 Switching Protocols:** Sunucu, istemci talebi üzerine protokol değiştiriyor.

**102 — Processing:** Bu kod, sunucunun isteği aldığını ve işlemekte olduğunu ancak henüz yanıt alınamadığını gösterir.

**103 — Early Hints:** Son HTTP mesajından önce bazı yanıt başlıklarını döndürmek için kullanılır.

## 2XX — Success
 
Sunucu, isteği başarıyla işledi.

**200 OK:** İstek başarılı, sunucu istenen kaynağı buldu ve yanıt verdi.

**201 Created:** İstek başarılı, sunucu yeni bir kaynak oluşturdu.

**202 Accepted:** Sunucu, isteği kabul etti ancak henüz işleme almadı.

**203 Non-Authoritative Information**: Sunucu, yanıt verirken kaynağı doğrudan almadı, başka bir kaynaktan alınan bilgiyi yanıt olarak döndürdü.

**204 No Content:** Sunucu, isteği başarılı bir şekilde işledi ancak yanıt olarak içerik döndürmedi.

## 3XX — Redirection
 
İstemci, yeni bir konuma gitmesi gerekiyor.

**300 Multiple Choices**: İstemci, kaynağın birden fazla sürümü olduğu için bir seçim yapmak zorunda kalabilir.

**301 Moved Permanently:** Kaynağın önemli ölçüde yeniden tasarlandığını ve istemcinin istenen kaynağına yeni bir kalıcı URI’nin atandığını gösterir.

**302 Found:** İstek yapılan kaynak geçici olarak başka bir URI'da bulunduğu için, istemci isteği yeni yerine yönlendirir.

**303 See Other:** İstemci, başka bir URI'ye yönlendirilmelidir.

**304 Not Modified:** İstemci, kaynakta herhangi bir değişiklik olmadığı için önbellekteki veriyi kullanabilir.

**307 Temporary Redirect**: İstemci, kaynağın geçici olarak başka bir URI'da bulunduğunu belirten bir yanıt alır.

## 4XX — Client errors
 
Sunucu, isteği işleyemez.

**400 Bad Request:**  Sunucunun geçersiz bir istek sebebiyle isteği anlayamadığını belirtir.

**401 Unauthorized:** Anlamsal olarak “kimliği doğrulanmamış” anlamına gelir. İstemci istenen yanıtı almak için kendini bir nevi doğrulamalıdır.

**403 Forbidden:** İstemcinin içeriğe erişim hakkı yoktur, yani yetkisizdir. 401’den farkı, istemcinin kimliği sunucu tarafından bilinir.

**404 Not Found:** Sunucu istenen kaynağı bulamıyor. Tarayıcı tarafında URL’nin tanınmadığı anlamına geliyor. API tarafında ise endpoint’in geçerli olduğunu fakat kaynağın kendisinin mevcut olmadığı anlamına gelir.

**405 Method Not Allowed:** İstek yapılan kaynak, istenen HTTP metoduyla uyumlu değil.

**406 Not Acceptable:** Sunucu, istemcinin kabul edilebilir içerik türlerini desteklemiyor.

## 5XX — Server Errors
 
Sunucu, isteği işleyemedi ve istemciye yanıt veremedi. 500 durum kodu, bir sunucu hatası olduğunu ve isteğin başarısız olduğunu belirtir.

**500 Internal Server Error:** Sunucu, isteği işleyemedi ve beklenmeyen bir hata meydana geldi.

**501 Not Implemented:** Sunucu, istemcinin istediği işlemi gerçekleştirecek yeteneğe sahip değil.

**502 Bad Gateway:** Sunucu, istemcinin talebini yerine getirebilmek için, bir proxy sunucu veya başka bir aracı sunucuya ihtiyaç duyduğunda ve bu aracı sunucudan beklenen yanıt alınamadığında gönderilir.

**503 Service Unavailable:** Sunucu, isteği karşılamak için geçici olarak kullanılamaz durumda.

**504 Gateway Timeout:** Sunucu, istemcinin talebini yerine getirebilmek için, bir proxy sunucu veya başka bir aracı sunucuya ihtiyaç duyduğunda ve bu aracı sunucudan beklenen yanıt süresi aşıldığında gönderilir.

**505 HTTP Version Not Supported:** Sunucu, istemcinin talep ettiği HTTP sürümünü desteklemiyor.


Bu yazımda anlatacaklarım umarım sizin içinde faydalı olmuştur. Okuyup zaman ayırdığınız için teşekkür ederim.


**Kaynakça:**

1. Chatgpt
2. https://developer.mozilla.org/en-US/docs/Web/HTTP/Status