Oldukça basit ve kısa bir yazı olacak amaç not tutmak ve bir problem çözümünü aydınlatmak.
Öncelikle şöyle basit bir apimiz olsun. /v1/hello endpointine post isteği alıyor sadece. name ve age adında iki form fieldımız var. required True olduğu için de kesinlikle gönderilmesini sağlıyor eğer gönderilmezse geriye 400 Bad Request döndürür. type ise gelen veriyi bize şu şekilde döndür demek için var. Eğer gelen veriyi dönüştüremezse yine 400 Bad Request döndürür.
Oldukça işe yarayan paremetreler ve kısaca yaptığı işler böyle. Peki neden özel bir tip oluşturmak isteriz ? Bunun bir çok nedeni olabilir, datetime formatını kullanıcıdan ISO tipinde almak istiyor olabiliriz bu bizim için bir standart olabilir, ip aralığı almak istiyoruz ve bu aralığın doğruluğunu test edebilitiz gibi bir çok neden olabilir. Veriyi test ediyoruz aslında.
Argüman parçalandığında o verinin isteğimiz formata uygun olup olmadığını bir kere daha düşünmek zorunda kalmamalıyız bu hem business katmanında yapılan işi ve karmaşıklığı azaltacak hem de daha profesyonel bir çözüm sağlayacaktır. Bir nevi middleware method yazabileceğimiz bir kısım burası.
type argümanına verilen metodlar eğer veri doğru formattaysa hatasız bir şekilde geriye döndürür ( return ) eğer yanlış ise hata fırlatır Throw Exception. Fırlattığı hata ise ValueError'dur. Bu bilgiyi de öğrendiğimize göre artık kendi tip dönüştürücü metodumuzu yazabiliriz.
Nedenini çok fazla sorgulamadan name argümanı için basit bir tip dönüştürücü aynı zamanda format checker sayılan bir method yazalım.
Kodumuzun son hali bu gelen name değerinin uzunluğu 3'ten küçük veya 40'tan büyük ise kullanıcıya hata döndüreceğiz. Yazdığımız name_format metodunu type argümanına verdik.
Sonuç:
Bu kadardı... Bir sonraki yazıda görüşmek üzere esen kalın :+)
0 yorum:
Yorum Gönder