RESTful Best Practices (En İyi Uygulama Yaklaşımı)

Abdulkerim Karaman
alBarakaTech Global
3 min readNov 13, 2018

Öncelikle tanım yapmak gerekirse web protokollerini ve teknolojilerini kullanan bir dağıtık sistemdir. Özellikle birden fazla platformda (web, mobil, tv, iot v.s.) hizmet veren uygulamaların backend yapısında sıkça rastlanmaktadır. Merkezi bir dağıtım kanalı sunmaktadır. Belirlenen şablonlar üzerinden dağıtım sunması sebebi ile tüketilen platformlarda sorunsuz çalışır. Tek bir noktadan yönetimi ile kolaylık sağlar.

1-HTTP İstekleri (GET, POST, PUT, DELETE)

REST servislere, http protokoller aracılığı ile çeşitli istekler kullanılarak erişim sağlanmaktadır. Aşağıdaki tablo ilgili istekleri karşılayan bir yapıyı inceleyelim.

Tabloda da gözüktüğü üzere okuma işlemlerini GET, veri tabanına yazma işlemlerini POST, update için PUT ve silme işlemleri için de DELETE istekleri kullanılır.

2- Geri Dönüş Tipi

Client tarafından yapılan bu isteklere sunucu tarafından bir cevap dönmektedir. Bu cevaplar genelde json formatında olmaktadır. Aşağıda örnekte görüldüğü üzere servis bir json objesi dönmüştür.

3-HTTP Durum Kodları

Tüm http isteklerinde olduğu gibi REST mimarisinde de http isteklerimizin içinde durum kodları yer almaktadır. Bu durum kodlarında sık kullanılanlar arasında:

200 OK — İşlem başarıyla gerçekleşirse kullanılır.

201 CREATED — İşlemi başarıyla gerçekleşirse kullanılır. Eklenen veri döndürülür.

204 NO CONTENT — İşlemi başarıyla gerçekleşirse kullanılır. Eklenen, silinen veri döndürülmez.

400 BAD REQUEST — Hatalı istek veya yetkilendirme hatası için kullanılır.

401 UNAUTHORIZED — Yetkilendirme hatası için kullanılır.

403 FORBIDDEN — Yetkilendirme ve erişim hatası için kullanılır.

404 NOT FOUND — İstenilen işlem yoksa kullanılır.

405 METHOD NOT ALLOWED — İzin verilmeyen HTTP yöntemi kullanıldığında bilgi vermek için kullanılır.

409 CONFLICT — Aynı veri üzerinde birden fazla kişinin işlem yaptığını bildirmek için kullanılır.

500 INTERNAL SERVER ERROR — Sunucuda herhangi bir hata olduğunda kullanılır.

4-URL’de Fiil Kullanmaktan Kaçının

Örnek olarak banner oluşturan bir servisin URL’i aşağıdaki gibi olmamalıdır.

GET: /articles/:slug/generateBanner/

Bunun yerine aşağıdaki kullanım tercih edilmelidir.

GET: /articles/:slug/banner/

5-URL Yapınızda Çoğul İsimlere Yer Verin

Rest mimarisinde yine çok tercih edilen ve doğru kabul edilen bir başka yaklaşımda, çoğul isimlerin kullanılmasıdır.

GET: /articles/2/
POST: /articles/
...

6-Dönen Nesnelerin Gövdesinde Hatalara Yer Verin

Bir servis çağrısında hata meydana geldiğinde kullanıcının bu hatayı ayıklamasına yardımcı olmamız gerekir.

Örnek:

{
"error": "Invalid payoad.",
"detail": {
"surname": "This field is required."
}
}

7-HyperMedia Kullanın

Nedir bu hypermedia ? Aşağıda bir arabaya ait bilgileri içeren obje yer almaktadır. Obje detayına baktığımızda “drivers” dizisi içinde sürücü bilgileri yer almaktadır. Yine bu obje içinde sürücünün detaylarına erişebileceğimiz url’de beraberinde gelmektedir. İşte bu URL client’ın bir sonraki adımda kullanacağı bilgiyi içermektedir. Bu tasarıma hyper media diyoruz.

{
"id": 711,
"manufacturer": "bmw",
"model": "X5",
"seats": 5,
"drivers": [
{
"id": "23",
"name": "Stefan Jauker",
"links": [
{
"rel": "self",
"href": "/api/v1/drivers/23"
}
]
}
]
}

8-Güvenlik

Evet her uygulamada olduğu gibi REST mimarisinde de en önemli konu güvenliktir. REST mimarisinde genelde güvenlik token’lar kullanılarak sağlanır. Bunların arasında da en çok kullanılanı JWT token’dir.

Token: İstemci ile sunucu arasında haberleşme esnasında kullanılan, şifrelenmiş bir anahtardır. Bu anahtar istemci tarafından sunucudan talep edilir. Sunucu tarafında oluşturulan bu token aracılığı haberleşme güvenli olarak sağlanır.

JWT token’ı başka bir makalede uzun uzun anlatacağım :) Yine de bilgi sahibi olmak isterseniz aşağıdaki adresten ulaşabilirsiniz.

https://jwt.io/

Evet daha iyi bir REST mimarisi oluşturmak dikkat etmemiz gereken başlıca konulara değindik. Tabiki uygulamalarımızın ihtiyaçlarına göre bu tasarımlar daha da geliştirilebilir.

Kendinize iyi bakın. Bir sonraki makalede görüşmek üzere…

--

--