# API Geliştirme Modeli
###### tags: `completed`
## Amaç
Bu belgenin amacı kurum içerisinde API geliştirmelerine model ve referans bilgilerini geliştiricilere sağlamaktadır.
## Prensipler
### RESTFul Tasarım
API operasyonları ve veri desenleri tasarlanırken RestFul prensiplere uygun olarak tasarlanır.
Tasarım yapılırken, tüm Sistem Geliştirme, Kurumsal Mimari ve BT Güvenlik ekiplerinin görüşü alınarak ilerlenir.
Görüşler tüm ekiplerce değerlendirilir.
>**Referanslar**
https://restfulapi.net/rest-architectural-constraints/
https://docs.microsoft.com/en-us/azure/architecture/best-practices/api-design
https://hackernoon.com/restful-api-design-step-by-step-guide-2f2c9f9fcdbf
https://medium.com/@__cure/rest-anti-patterns-b128597f5430
### Platform
Geliştirmeler için **.Net Core Web Api** platofrmu kullanılır. Dökümantasyon desteği için **Swashbucle** ile sağlanır.
Geliştirilecek operasyonlar ve veri modelleri için kod içerisinde anlaşılır ve tam dökümantasyon yapılır.
Tüm birimlerlerin görüşünün tamamlama aşaması tüm operasyon ve modellerle ilgili tanımların netleştiği ve belgelendirildiği zamandır.
>**Referanslar**
https://docs.microsoft.com/en-us/aspnet/core/tutorials/getting-started-with-swashbuckle?view=aspnetcore-3.1&tabs=visual-
https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-web-api?view=aspnetcore-3.1&tabs=visual-studio
https://github.com/domaindrivendev/Swashbuckle.AspNetCore
### Yaşayan Belgelendirme
Operasyonlar ve modeller üzerinde her türlü geliştirme yine proje içerisinde belgelendirlecektir.
Belgelendirme kuralları;
-Belgelendirme dili İngilizcedir.
-Her operasyonun ne iş yaptığı tereddüt yaratmayacak şekilde tanımlanacaktır.
-Tüm parametrelerin ne işe yaradığı ve hangi verileri alacağı tanımlanacaktır.
-Kullanım senaryoları ile ilgili örnek veriler sağlanacaktır.
-Okunabilirliği arttırmak adına gerektiği yerde belgelendirme için *markdown* formatı kullanılacaktır.
>**Referanslar**
https://commonmark.org/help/
https://stackoverflow.com/questions/39924144/how-to-format-swagger-2-0-text-descriptions
https://docs.microsoft.com/en-us/aspnet/core/tutorials/web-api-help-pages-using-swagger?view=aspnetcore-3.1
### Hata Kodları
Hata kodları için HTTP dönüş kodlarının kullanılmayan http kodları kullanılır.
Operasyon bazında her bir hata farklı kod ile döner. Hata ile ilintili farklı bir model sağlanıyorsa bu tanımlama da belgelendirilir.
:::danger
**500** Hata kodu ile yanıt dönen operasyonlar hatalı olarak değerlendirilecektir.
:::
>**Referanslar**
https://www.restapitutorial.com/httpstatuscodes.html
https://en.wikipedia.org/wiki/List_of_HTTP_status_codes
https://developer.mozilla.org/en-US/docs/Web/HTTP/Status