REST API

Halil Bakar
4 min readDec 23, 2023

--

REST API

Rest API Nedir ?

  • Rest API ( Representational State Transfer Application Programming Interface ) kısaltmasıdır ve web servislerini tasarlamak ve iletişim kurmak için kullanılan bir mimaridir. Rest, HTTP protokolü üzerinden kaynakları temsil eden ve bu kaynaklarla etkileşimde bulunmak için standart HTTP metodlarını (GET, POST, PUT, DELETE vb.) kullanan bir tasarım prensibidir.
  • RESTful servisler, kaynaklar ( resources ) üzerinde temel CRUD ( Create, Read, Update, Delete ) operasyonlarını destekler.

Temel Rest API Kavramları

  • Kaynaklar ( Resources ) : Rest API, belirli bir URL ( Uniform Resource Identifier ) üzerindeki kaynakları temsil eder. Örneğin, bir blog uygulaması için “/posts” veya “/users” gibi.
  • HTTP Metodları :
  1. Get : Kaynağı almak için kullanılır.
  2. POST : Yeni bir kaynak oluşturmak için kullanılır.
  3. PUT ve PATCH : Var olan bir kaynağı güncellemek için kullanılır. PUT, tam kaynağı, PATCH ise sadece değişiklikleri içerir.
- PUT metodunda tüm bilgileri girmelisiniz.

{
"title": "yeni başlık",
"content": "açıklama"
}

- PATCH metodunda sadece belirttiğiniz bilgiler değişir.

{
"title": "yeni başlık",
}

4. DELETE : Bir kaynağı silmek için kullanılır.

5. OPTIONS : İstemci tarafındaki geliştirici, O endpoint’te hangi metotları kullanabileceğini görmek için bir request gönderir.

6. TRACE : İstemcinin gönderdiği request’in tamamen aynısını 200 OK koduyla geri döner. Debugging için kullanılır.

URL ( Uniform Resources Identifier ) : Her kaynak bir URL ile temsil edilir. URL kaynağa erişmek için kullanılır.

  • Öğeler ( Representations ) : Kaynaklar, verileri temsil eden bir formata sahiptir. Bu genellikle JSON veya XML formatında olabilir.

Temel Rest API İlkeleri

  • Statelessness ( Durumsuzluk ) : Her istek, önceki isteklerle bağlantılı olmamalıdır. Her istek tamamen bağımsız olmalıdır.
  • Client-Server İlişkisi : Müşteri ve sunucu, bağımsız olarak geliştirilebilen ve ölçeklenebilen iki ayrı bileşendir.
  • Cacheability ( Önbelleğe Alma ) : Yanıtlar, önbelleğe alınabilir olmalıdır. Bu, aynı isteğin tekrarlanması durumunda önbellekten alınabilir.
  • Uniform Interface ( Tek Tip Arayüz ) : Arayüz, genel olmalı ve tüm kaynaklar için uygulanabilir olmalıdır.
  • HATEOAS (Hypermedia As The Engine Of Application State) : RESTful API tasarımının bir ilkesidir ve RESTful servislerde uygulanabilecek bir konsepttir. Servislerin daha esnek ve ölçeklenebilir olmalarına yardımcı olabilir, çünkü istemciler servisin içsel yapısı hakkında bilgi sahibi olmadan hala etkileşimde bulunabilirler. Örneğin aşağıdaki yapıdan sadece istenilen veri alınabilir.

"books": [
{
"id": 1,
"title": "RESTful API Design",
"links": [
{"rel": "self", "href": "/books/1"},
{"rel": "author", "href": "/authors/123"}
]
},
{
"id": 2,
"title": "Web Development Basics",
"links": [
{"rel": "self", "href": "/books/2"},
{"rel": "author", "href": "/authors/456"}
]
}
]
}

Rest API Geliştirme Aşamaları

  • Kaynakları Belirleme : Hangi veirlerin kaynak olarak kullanılacağı belirlenir.
  • URL Tasarımı : Her kaynağın benzersiz bir URL’i olmalıdır. URL tasarımında anlamlı ve tutarlı olmalısınız.
  • HTPP Metodlarını Kullanma : Her kaynak için doğru HTTP metodu kullanılmalıdır.
  • Veri Temsili : Veriyi temsil etmek için uygun format seçilmeli. ( Örn. JSON )
  • Hata Yönetimi : Hata durumlarını nasıl ele alacağınızı düşünün ve uygun HTTP durum kodlarını kullanın.
  • Güvenlik : API güvenliğini sağlamak için yetkilendirme ve kimlik doğrulama mekanizmalarını uygulayın.

Rest API Güvenliği

  • HTTPS Kullanımı : Verilerin şifrelenmesi için HTTPS kullanılmalıdır.
  • Yetkilendirme ve Kimlik Doğrulama : API’ye erişimi kontrol etmek için yetkilendirme ve kimlik doğrulama mekanizmalarını kullanın.
  • Veri Doğrulama ve Güvenlik Duvarı : Gelen verileri doğrulayın ve güvenlik duvarları kullanarak kötü niyetli girişlere karşı önlemler alın.

Request Yapısı

  • Header : Request’in metadata’sını tutar.
  • Body : Request’in esas verisini tutar. Genellikle JSON formatındadır.
  • Operation : Request’in yapacağı işlemi tanımlar. Her request HTTP metodlarından birine sahiptir.
  • Endpoint : Request’in adresini tanımlar.
Header — {‘Content-Type’: ‘application/json’}
Body – {}
Operation – GET
Endpoint – medium.com/halilbakar

Response Yapısı

  • Header : Response’un metadata’sını tutar.
  • Body : Sunucudan gelen esas veridir. Çoğu zaman JSON formatındadır.
  • Status Line : Response’un durumunu tanımlar. HTTP Status Code adında 3 haneli önemli bir sayı tutar.
Header – {‘Content-Type’: ‘application/json’}
Body – {“title”:”REST API”,”content”:”REST API Konusu”}
Status Line – 200 OK

HTTP kodları

  • 100 Information : 1 ile başlayan HTTP kodları bilgilendirme içerir.
  • 200 Success : 2 ile başlayan kodlar request’in başarıyla işlendiği anlamına gelir. “201 Created” kodu alırsanız, işleminiz başarılıdır ve sunucu tarafında yeni bir obje oluşturulmuştur. 202 Accepted” alırsanız sunucu size doğru şekilde cevap vermiştir ancak gösterilecek bir içerik yoktur.
  • 300 Redirection : 3 ile başlayan kodlar bağlandığınız endpoint’in artık geçersiz olduğu anlamına gelir. Çoğu zaman kullanılmaz çünkü doğrudan redirect edilirsiniz.
  • 400 Client Error : 4 ile başlayan kodlar istemci tarafının günahkâr olduğu anlamına gelir. Yani sorun request’tedir. Olmayan bir bloğun endpoint’ine GET request atarsanız 404 Not Found cevabı alırsınız. Eğer yetkiniz olmayan bir request atarsanız 401 Unauthorized cevabı alırsınız.
  • 500 Server Error : 5 ile başlayan kodlar sunucu tarafının günahkâr olduğu anlamını taşır. Gönderilen request doğru işlenemediğinde sunucu bu kodu döner.

CRUD fonksiyonlarının HTTP metotlarındaki karşılıkları

  • Create ➜ Post
  • Read ➜ Get
  • Update ➜ Put
  • Update ➜ Patch
  • Delete ➜ Delete

KAYNAK

https://medium.com/javarevisited/10-rest-api-best-practices-explained-in-10-minutes-2a8040eec5db

Yukarıdaki linklerden konuyu daha detaylı inceleyebilirsiniz. Bu yazı öncelikle kendime bir şeyler katma, daha sonra okuyan arkadaşlara fayda sağlama adına yazıldı. Kendi eğitim kütüphanemi oluşturuyorum gibi düşünebilirsiniz. Görüşmek dileğiyle..

--

--