SlideShare ist ein Scribd-Unternehmen logo
1 von 19
.NET Core ile RESTful API Design
Mennan Köse
Software Developer at MonoFor, Inc.
1
https://mennan.dev
mennankose
Ajanda
● Best Practices
● HTTP Methods
● Security
● Versioning
2
REST API
● Client ile server HTTP protokolü üzerinden iletişim kurar.
● Semantik adres tanımlamaları önemlidir.
● Alınacak aksiyonlar HTTP metotları üzerinden
gerçekleştirilir.
● HTTP durum kodları ile yapılan işlemin sonucu bildirilir.
3
Adres Standartları
● Kaynak isimleri çoğul olmalıdır
http://localhost/v1/users
http://localhost/v1/users/1
http://localhost/v1/users/1/posts
● Filtre, sıralama ve sayfalama bilgileri query string üzerinden
gönderilmelidir
http://localhost:/v1/users?name=Anıl
http://localhost:/v1/users?page=1&per_page=10
http://localhost:/v1/users?page=1&per_page=10&sort=-surname
http://localhost/v1/users?filter={name:Anıl,surname:Atalay}
4
HTTP Metotları
CRUD işlemleri için kullanılır.
5
GET Kaynaktaki tüm verileri veya tek veriyi almak için kullanılır
POST Yeni bir kayıt eklemek için kullanılır
PUT Varolan bir kaydı güncellemek için kullanılır
PATCH Varolan bir kaydı güncellemek için kullanılır
DELETE Varolan bir kaydı silmek için kullanılır
HTTP Durum Kodları
Yapılan işlemin sonucu HTTP durum kodları üzerinden belirtilir.
6
200 İşlem başarılı olduğunda dönülür.
201 Kayıt ekleme işlemi başarılı olduğunda dönülür.
204 Güncelleme veya silme işlemleri başarılı olduğundan dönülür.
400 Yapılan istek hatalı ise veya veri doğrulanamıyorsa dönülür.
401 Kimlik doğrulama hataları için dönülür.
403 Yetkisi olmayan bir adrese erişilmek istenildiği zaman dönülür.
404 Veri bulunamadığı zaman dönülür.
500 Sunucu tarafında hatalar oluştuğu zaman dönülür.
HTTP Durum Kodları
7Kaynak: https://tr.pinterest.com/pin/52002570675423170/
HTTP Header Bilgileri
● Sunucuya iletilen istekle ilgili ek bilgileri göndermek için
kullanılır.
● Güvenlik Bilgileri (Authorization, CORS)
● Request ve Response’un İçerik Tipi (Content-Type)
● Response’un Döneceği Dil (Accept-Language)
● Önbellek Ayarları (cache-control)
8
CORS (Cross Origin Resource Request)
● Gelen istekleri URL, Header veya HTTP metotları bazında
sınırlandırmak için kullanılır.
● Sınırlandırma Access-Control-Allow-Origin, Access-
Control-Allow-Headers, Access-Control-Allow-
Methods HTTP header’ları kullanılarak yapılır.
9
CORS (Cross Origin Resource Request)
10
CORS (Cross Origin Resource Request)
11
Security
● HTTPS üzerinden yayın yapılmalıdır.
● oAuth 2 veya JWT gibi token bazlı doğrulama standartları
kullanılmalıdır.
● İstekle gelen verinin doğruluğu sağlanmalıdır.
● CORS aktif hale getirilmelidir.
● Destek verilmeyen içerik tipleri engellenmeli.
● API üzerindeki tüm işlemler Audit Log olarak tutulmalı.
12
Security
● X-Content-Type-Options veya X-Frame-Options gibi HTTP
header’ları eklenmeli.
● HSTS aktif hale getirilmeli.
● Kritik bilgiler adres üzerinden değil, header veya body
üzerinden taşınmalıdır.
● 405, 406, 413, 415, 429 gibi HTTP durum kodları ile geri
dönüş sağlanmalı.
13
Versioning
● API’larda yapılacak olan yapısal değişikliklerin mevcut
kullanıcıları etkilememesi için versiyonlama yapılmalıdır.
● Varsayılan API versiyonu tanımlanmalıdır.
● Versiyon isimleri major.minor şeklinde olmalıdır.
● URL yolundan, HTTP Header’ından veya Query String
üzerinden versiyon belirtilebilir.
● Breaking change varsa major, yoksa minor versiyon
numarası değiştirilerek versiyonlama yapılmalıdır.
14
Versioning
URL yolu üzerinden:
https://localhost:5001/v1/users
https://locahost:5001/v1.1/users
https://localhost:5001/v2/users
Query String üzerinden:
https://localhost:5001/users?api-version=1.0
15
Versioning
HTTP Header üzerinden:
16
Documentation
● Swagger
● Doxygen
● ReDoc
● RAML
● Docusaurus
17
DEMO
18
Teşekkürler..
.
19

Weitere ähnliche Inhalte

Ähnlich wie .NET Core ile RESTful API Design

Php teknikeri
Php teknikeriPhp teknikeri
Php teknikerisersld89
 
Php testleri
Php testleriPhp testleri
Php testlerisersld89
 
Php kursu-atasehir
Php kursu-atasehirPhp kursu-atasehir
Php kursu-atasehirsersld88
 
Php dokumani
Php dokumaniPhp dokumani
Php dokumanisersld89
 
Php ornekleri
Php ornekleriPhp ornekleri
Php orneklerisersld89
 
Php egitimi-atasehir
Php egitimi-atasehirPhp egitimi-atasehir
Php egitimi-atasehirsersld89
 
REST yoluyla Web Servis Geliştirme
REST yoluyla Web Servis GeliştirmeREST yoluyla Web Servis Geliştirme
REST yoluyla Web Servis Geliştirmeemirkarsiyakali
 
Php danismani
Php danismaniPhp danismani
Php danismanisersld89
 
Temel SEO Eğitimi
Temel SEO EğitimiTemel SEO Eğitimi
Temel SEO EğitimiUğur Eskici
 
Php sitesi
Php sitesiPhp sitesi
Php sitesisersld89
 
Php egitimi-avcilar
Php egitimi-avcilarPhp egitimi-avcilar
Php egitimi-avcilarsersld89
 
Php teknigi
Php teknigiPhp teknigi
Php teknigisersld89
 
Php egitimi-kartal
Php egitimi-kartalPhp egitimi-kartal
Php egitimi-kartalsersld89
 
2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği
2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği
2010 Kocaeli Linux Günleri - Linux Web GeliştiriciliğiBurak Oğuz
 
Php kursu-sultangazi
Php kursu-sultangaziPhp kursu-sultangazi
Php kursu-sultangazisersld88
 
Php kursu-antalya
Php kursu-antalyaPhp kursu-antalya
Php kursu-antalyasersld88
 
Php kursu-avcilar
Php kursu-avcilarPhp kursu-avcilar
Php kursu-avcilarsersld88
 

Ähnlich wie .NET Core ile RESTful API Design (18)

Php teknikeri
Php teknikeriPhp teknikeri
Php teknikeri
 
Php testleri
Php testleriPhp testleri
Php testleri
 
Php kursu-atasehir
Php kursu-atasehirPhp kursu-atasehir
Php kursu-atasehir
 
Php dokumani
Php dokumaniPhp dokumani
Php dokumani
 
Php ornekleri
Php ornekleriPhp ornekleri
Php ornekleri
 
Php egitimi-atasehir
Php egitimi-atasehirPhp egitimi-atasehir
Php egitimi-atasehir
 
REST yoluyla Web Servis Geliştirme
REST yoluyla Web Servis GeliştirmeREST yoluyla Web Servis Geliştirme
REST yoluyla Web Servis Geliştirme
 
Php testi
Php testiPhp testi
Php testi
 
Php danismani
Php danismaniPhp danismani
Php danismani
 
Temel SEO Eğitimi
Temel SEO EğitimiTemel SEO Eğitimi
Temel SEO Eğitimi
 
Php sitesi
Php sitesiPhp sitesi
Php sitesi
 
Php egitimi-avcilar
Php egitimi-avcilarPhp egitimi-avcilar
Php egitimi-avcilar
 
Php teknigi
Php teknigiPhp teknigi
Php teknigi
 
Php egitimi-kartal
Php egitimi-kartalPhp egitimi-kartal
Php egitimi-kartal
 
2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği
2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği
2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği
 
Php kursu-sultangazi
Php kursu-sultangaziPhp kursu-sultangazi
Php kursu-sultangazi
 
Php kursu-antalya
Php kursu-antalyaPhp kursu-antalya
Php kursu-antalya
 
Php kursu-avcilar
Php kursu-avcilarPhp kursu-avcilar
Php kursu-avcilar
 

.NET Core ile RESTful API Design

  • 1. .NET Core ile RESTful API Design Mennan Köse Software Developer at MonoFor, Inc. 1 https://mennan.dev mennankose
  • 2. Ajanda ● Best Practices ● HTTP Methods ● Security ● Versioning 2
  • 3. REST API ● Client ile server HTTP protokolü üzerinden iletişim kurar. ● Semantik adres tanımlamaları önemlidir. ● Alınacak aksiyonlar HTTP metotları üzerinden gerçekleştirilir. ● HTTP durum kodları ile yapılan işlemin sonucu bildirilir. 3
  • 4. Adres Standartları ● Kaynak isimleri çoğul olmalıdır http://localhost/v1/users http://localhost/v1/users/1 http://localhost/v1/users/1/posts ● Filtre, sıralama ve sayfalama bilgileri query string üzerinden gönderilmelidir http://localhost:/v1/users?name=Anıl http://localhost:/v1/users?page=1&per_page=10 http://localhost:/v1/users?page=1&per_page=10&sort=-surname http://localhost/v1/users?filter={name:Anıl,surname:Atalay} 4
  • 5. HTTP Metotları CRUD işlemleri için kullanılır. 5 GET Kaynaktaki tüm verileri veya tek veriyi almak için kullanılır POST Yeni bir kayıt eklemek için kullanılır PUT Varolan bir kaydı güncellemek için kullanılır PATCH Varolan bir kaydı güncellemek için kullanılır DELETE Varolan bir kaydı silmek için kullanılır
  • 6. HTTP Durum Kodları Yapılan işlemin sonucu HTTP durum kodları üzerinden belirtilir. 6 200 İşlem başarılı olduğunda dönülür. 201 Kayıt ekleme işlemi başarılı olduğunda dönülür. 204 Güncelleme veya silme işlemleri başarılı olduğundan dönülür. 400 Yapılan istek hatalı ise veya veri doğrulanamıyorsa dönülür. 401 Kimlik doğrulama hataları için dönülür. 403 Yetkisi olmayan bir adrese erişilmek istenildiği zaman dönülür. 404 Veri bulunamadığı zaman dönülür. 500 Sunucu tarafında hatalar oluştuğu zaman dönülür.
  • 7. HTTP Durum Kodları 7Kaynak: https://tr.pinterest.com/pin/52002570675423170/
  • 8. HTTP Header Bilgileri ● Sunucuya iletilen istekle ilgili ek bilgileri göndermek için kullanılır. ● Güvenlik Bilgileri (Authorization, CORS) ● Request ve Response’un İçerik Tipi (Content-Type) ● Response’un Döneceği Dil (Accept-Language) ● Önbellek Ayarları (cache-control) 8
  • 9. CORS (Cross Origin Resource Request) ● Gelen istekleri URL, Header veya HTTP metotları bazında sınırlandırmak için kullanılır. ● Sınırlandırma Access-Control-Allow-Origin, Access- Control-Allow-Headers, Access-Control-Allow- Methods HTTP header’ları kullanılarak yapılır. 9
  • 10. CORS (Cross Origin Resource Request) 10
  • 11. CORS (Cross Origin Resource Request) 11
  • 12. Security ● HTTPS üzerinden yayın yapılmalıdır. ● oAuth 2 veya JWT gibi token bazlı doğrulama standartları kullanılmalıdır. ● İstekle gelen verinin doğruluğu sağlanmalıdır. ● CORS aktif hale getirilmelidir. ● Destek verilmeyen içerik tipleri engellenmeli. ● API üzerindeki tüm işlemler Audit Log olarak tutulmalı. 12
  • 13. Security ● X-Content-Type-Options veya X-Frame-Options gibi HTTP header’ları eklenmeli. ● HSTS aktif hale getirilmeli. ● Kritik bilgiler adres üzerinden değil, header veya body üzerinden taşınmalıdır. ● 405, 406, 413, 415, 429 gibi HTTP durum kodları ile geri dönüş sağlanmalı. 13
  • 14. Versioning ● API’larda yapılacak olan yapısal değişikliklerin mevcut kullanıcıları etkilememesi için versiyonlama yapılmalıdır. ● Varsayılan API versiyonu tanımlanmalıdır. ● Versiyon isimleri major.minor şeklinde olmalıdır. ● URL yolundan, HTTP Header’ından veya Query String üzerinden versiyon belirtilebilir. ● Breaking change varsa major, yoksa minor versiyon numarası değiştirilerek versiyonlama yapılmalıdır. 14
  • 17. Documentation ● Swagger ● Doxygen ● ReDoc ● RAML ● Docusaurus 17

Hinweis der Redaktion

  1. https://www.codetinkerer.com/2015/12/04/choosing-an-http-status-code.html
  2. https://www.codetinkerer.com/2015/12/04/choosing-an-http-status-code.html https://tr.pinterest.com/pin/52002570675423170/
  3. https://medium.com/@gokhansengun/http-cache-y%C3%B6ntemleri-nelerdir-6c3e8fdd778f
  4. https://cheatsheetseries.owasp.org/cheatsheets/REST_Security_Cheat_Sheet.html https://owasp.org/www-project-secure-headers/
  5. https://cheatsheetseries.owasp.org/cheatsheets/REST_Security_Cheat_Sheet.html https://owasp.org/www-project-secure-headers/
  6. https://github.com/mennan/dotnet-istanbul-webapi