3 puan yazan musoftware 2021-10-02 | 1 yorum | WhatsApp'ta paylaş

Merhaba! Şu anda bitirme projesine (ve iş bulmaya...) hazırlanan bir lisans öğrencisiyim.

Flask ile REST API sunucusu yazarken, birden fazla projede ortak olarak gereken özellikleri içeren bir şablon olsa iyi olur diye düşündüm ve bununla ilgili bir proje geliştirdim.

Şu anda bulunan özellikler aşağıdaki gibi.

JWT üyelik kaydı, giriş ve kimlik doğrulama (Refresh, Access token doğrulaması)

......- Flask-Admin kimlik doğrulaması (Admin token çerezinin otomatik verilmesi ve doğrulama)

......- Manuel token geçersiz kılma (oturum açmış belirli bir kullanıcının token'ını geçersiz kılma)

......- E-posta adresi doğrulaması ve e-posta kullanarak parola sıfırlama (e-posta token'ı)

Python'un docstring ve decorator yapılarıyla özellik kullanımı

......- Giriş zorunlu ve giriş önerilen route tanımları

......- İstek parametrelerini tanımlama ve kısıtlama (Required/Optional field yönetimi)

............- Header/Body/Query girdi doğrulaması

......- Route açıklaması / istek parametreleri / ilgili route'ta mümkün olan yanıtların dokümantasyonu

Doküman dışa aktarma

......- OpenAPI 3.0 YAML dokümanı olarak dışa aktarma

......- ER Diagram oluşturma özelliği (.dot çıktısı)

Bunlar arasında giriş (JWT doğrulaması) ve OpenAPI 3 dokümanı oluşturma tarafını PyJWT ve apispec kullanarak doğrudan kendim yazdım.

OpenAPI 3 dokümanı oluşturma tarafında Flask-RESTful ve Flask-RESTplus bakım yapılmayan durumdaydı, Flask-RESTX ise benim istediğim kullanım biçimi değildi.

Ayrıca giriş ve kimlik doğrulama tarafında Flask-Login oturum tabanlıydı ve Flask-JWT-Extended diye bir şey olduğunu bilmiyordum (...), bu yüzden kendim yazdım.

Sonuçta bir lisans öğrencisiyim ve bunu aceleyle yaptığım için yorumlar da yetersiz, kod da çok temiz değil; yine de bu şekilde API tanımlanabileceğini gösteren bir PoC olarak değerlendirirseniz memnun olurum!

(Aslında az önce bir kez paylaşmıştım ama özellikler kısmındaki girinti boşlukları tamamen uçup gittiği için (...) silip tekrar paylaşıyorum. Anlayışınız için teşekkür ederim!)

1 yorum

 
xguru 2021-10-03

Ve henüz lisans öğrencisisiniz, gerçekten harika. Destekliyorum!!