Bir çerçeve seçmek kolay değil ve bu yüzden baş ağrısından kurtulmanıza yardımcı olmak için buradayım.
Neden Flask ve FastAPI'yi karşılaştırmalıyız ?
Onlar benzer. Her ikisi de, daha hızlı geliştirme süresi ve daha fazla esneklik anlamına gelen, şişirilmiş ziller ve ıslıklar olmadan soyulmuş Python mikro çerçeveleridir. Ayrıca, her ikisi de API'ler ve web uygulamaları oluşturmak için kullanılır.
Onlar da farklıdır. Flask, savaşta daha fazla test edilmiştir, bu nedenle biraz daha güvenilirdir ve yaygın olarak kullanılır. FastAPI, Pydantic ve SwaggerUI gibi birçok yerleşik desteğe sahip hızıyla tanınan daha yeni, daha modern bir çerçevedir.
Artık her bir çerçeveyi daha iyi anladığınıza göre, yüz yüze görüşmemize başlayalım!
Bazen yeni bir şey öğrenmenin en zorlu kısmı aslında başlamaktır. Bu yüzden Kurulum ile başlayacağız.
Python'un favori yükleyicisi pip'i kullanarak hem Flask'ı hem de FastAPI'yi kurmak nispeten kolaydır. Ayrıca, her iki Python projeniz için çarpışma hatalarını ortadan kaldıran yalıtılmış bir ortam olan sanal bir ortamın içine kurmak da iyi bir uygulamadır.
Sonuç : FastAPI'yi Uvicorn ile kurduğunuza dikkat edin. Uvicorn'u, uygulamalarınızın daha hızlı çalışmasını sağlayan, ışık hızında bir sunucu olarak düşünün.
Hayatınız boyunca yalnızca bir satır kod yazdıysanız, bahse girerim bunun gibi bir şey olmuştur:
print("Hello World")
Sanki başka bir dil öğreniyormuşsunuz gibi, diyelim Mandarin. İnsanların onları telaffuz edebilmesi için Çince karakterleri İngilizce'ye çeviren Pinyin adında bir sistem var. Tıpkı bir Hello World uygulaması gibi, hızlı bir şekilde çalışmaya başlamanız için tasarlanmıştır.
Bir merhaba dünya uygulamasının hem Flask'ta hem de FastAPI'de nasıl göründüğünü görelim.
Sonuç : Flask'ın daha yeni sürümlerinde, yönlendirme için kısayollar olarak
@app.get()ve
@app.post()dekoratörlerini kullanabilirsiniz . Önceki kullanım yöntemi,
@app.route()HTTP fiillerinizi aşağıdaki gibi bir yöntem listesine aktarmanızı gerektiriyordu:
methods=\["GET", "POST"].
Not: Flask varsayılan olarak a yapar
GET, bu nedenle yöntemler listesinde belirtmeniz gerekmez.
Bu yöntemler ayrıca her HTTP yöntemi için aşağıdaki dekore edilmiş yolları destekleyen FastAPI'de gelir:
@app.get()
@app.post()
@app.put()
@app.delete()
“Merhaba Dünya” uygulamanızı yazdıktan sonra, tüm dünyanın görmesi için üretime koymadan önce, geliştirme aşamasında veya yerel olarak makinenizde çalıştırmak isteyeceksiniz. Başvurunuz beklendiği gibi çalışmıyorsa, insanlar kesinlikle çıldıracaktır. Çılgınlığı en aza indirmek istiyorsun.
Yani terminalinizde şu komutları çalıştırın:
Sonuç : FastAPI, siz kod değişiklikleri yaparken uygulamayı çalışır durumda tutan Hot Reloading'i kullanır. Bu nedenle, geliştirme sunucusunu yeniden başlatmanız gerekmez. Flask ile,
export FLASK_ENV=developmentgeliştirme sunucunuzu yeniden başlatmadan kod değişiklikleri yapmanızı sağlayan ek bir terminal komutuna ihtiyacınız vardır: .
Merhaba Dünya örneğinde, Flask ve FastAPI'de GET'in nasıl göründüğünü gördük, şimdi bir POST yöntemine daha yakından bakalım.
Sonuç : Flask 2.0 ve FastAPI, POST yöntemi yaparken çok benzer görünüyor. İşin püf noktası, yeni verilerin nasıl oluşturulduğunu görmektir.
Flask ile, istemci gibi davranan Postman gibi bir araç kullanmanız gerekecek, böylece POST isteklerinizi ve oluşturduğunuz verileri JSON formatında görebilirsiniz.
FastAPI, POST istekleri de dahil olmak üzere tarayıcıdan gelen isteklerinizle etkileşim kurmak için otomatik belgeleri kullanmanıza olanak tanıyan Pydantic ve SwaggerUI ile birlikte gelir.
Flask ayrıca otomatik belgeleri de kullanabilir, ancak onu flask-swagger kullanarak kurmanız gerekecek. Ayrıca çalışmasını sağlamak için birçok yapılandırma var. Bir sonraki bölümde FastAPI'de POST isteklerinizi nasıl göreceğinize bakalım.
Sihire inanıyorsanız, kesinlikle Otomatik Belgeleme'yi seveceksiniz.
FastAPI, nesneleri kolayca modellemek ve doğrulamak için bir çerçeve olan Pydantic'i temel alır. Kutudan çıktığı için kurmanıza gerek yok. Pydantic, yapıcıları yazma zahmetini ortadan kaldırır ve tüm sihirli yöntemleri alırsınız. Pydantic ayrıca, daha dostça hatalar görüntüleyen ve python türü ipuçlarını kullanan ve hata ayıklama süresini azaltan Veri doğrulaması yapar. Otomatik belgelerinize erişmek için geliştirme sunucunuzun çalıştığından emin olun, ardından yerel ana makinenize ve uygulamanızın çalıştığı bağlantı noktasına gidin:
Aşağıdaki örnekteki gibi POST isteğinizi göreceksiniz; başka HTTP yöntemleri kullanıyorsanız, bunlar da görünür olacaktır.
Otomatik belgelemenin güzelliğini görebilmemiz için daha havalı bir şey yapalım. Diyelim ki FastAPI'de bu kodumuz var:
Pydantic'i kullanmak
BaseModeliçin
Playersınıfın miras alacağını içe aktarmanız gerektiğine dikkat edin . Ayrıca sınıfımızın içinde değişkenleri tür ipuçları olarak bildiriyoruz ve POST isteğimizde bir sözlük döndürüyoruz.
Otomatik belgelerinizi açtığınızda bir Şema göreceksiniz. Bu Şema, modeliniz için değişkenler içeren, hangi alanların gerekli, hangilerinin isteğe bağlı olduğunu görebileceğiniz bir iskelettir.
Ayrıca "Deneyin" ve değişkenler için değerler ileterek API uç noktanızı test edebilirsiniz. Burada, örneğin, String türündeki
"Michael Jordan"değişken için geçiyoruz
player_name.
Ardından, Yürüt'ü tıkladığınızda size Yanıt Gövdesini verecektir. Postman gibi ekstra bir araç kullanmanıza gerek yoktur.
Etkileşimli belgeleriniz de sizin için bir curl komutu oluşturacaktır, böylece sıfırdan bir tane yazmanız gerekmez:
Sonuç : Otomatik Belgeleme kutudan FastAPI ile birlikte Pydantic ve Swagger UI ile çıktığı için, bu özellikler kesinlikle geliştirme sürenizi hızlandıracaktır. İsteklerinizi test etmek için herhangi bir harici araç yüklemeniz gerekmez.
Sevgili dostumuz Pydantic, kurulum sırasında FastAPI ile birlikte geldiğinden, kodunuzla ilgili bir sorunla karşılaştığınızda size oldukça kolay hata mesajları verecektir.
Burada, Pydantic BaseModel'den türemiş değişkenler içeren bir sınıf Login yaratıyoruz. Biz ilk eğer kontrol ediyoruz
usernameolduğunu
janedoeve
passwordolduğunu
passworld12345, o zaman başarı veya buna göre bir başarısızlık mesajı döndürür.
Otomatik dokümantasyona dönüyoruz
Noneve kullanıcı adına geçerek istek gövdemizi test ediyoruz :
Pydantic sihrini çalıştıracak ve size hatanın tam olarak ne olduğunu söyleyen samimi bir mesaj alacaksınız. Bu durumda, hata verir
Expecting Valuebiz geçirilen çünkü para haklı,
Nonekarşı
username.
Sonuç : Flask'ın kurum içi veri doğrulama desteği yoktur. Güçlü Pydantic paketini Flask-Pydantic ile yükleyerek veri doğrulama için kullanabilirsiniz .
Bir yol veya URL parametresi, tek bir öğe getirir. Diyelim ki tek bir oyuncu almak istiyoruz. Hangi oyuncunun URL'ye aktardığımızın bir kimliği varsa, kullanıcıya iade edilecektir.
Diyelim ki bir sözlük listemiz var ve bu JSON dosyasından bir oyuncu almak istiyoruz:
Burada rotamızda 5000 numaralı bağlantı noktasındaki localhost'a 2 kimliği ile geçiyoruz ve oyuncuyu 2 kimliği ile geri alıyoruz.
Burada rotamızda 8000 numaralı bağlantı noktasındaki localhost'a 1 kimliği ile geçiyoruz ve oynatıcıyı 1 kimliği ile geri alıyoruz.
Sonuç : FastAPI ile Python tipi ipucu kullandığından kodunuzu Django gibi diğer çerçevelere taşıyabilirsiniz. Flask ile taşınabilir değil çünkü Python ipucu değil, çerçeveye özgü tür ipucu kullanıyoruz.
Şablonlar Klasörü, Flask veya FastAPI'de bir web uygulaması oluştururken HTML dosyalarınızı depolar ve değişkenlerinizi HTML'de görüntülemek için Jinja'yı kullanmanız gerekir. Jinja, HTML'yi görüntülemek için Python'a benzer bir kod yazmanıza izin veren bir şablonlama motorudur.
Varsayılan olarak Flask, şablonları bir "şablonlar" klasöründe arar. Dosya yapınızda bir tane oluşturmanız yeterlidir.
Ardından, değişkenlerinizi çift küme paranteziyle çevreleyerek görüntülemek için Jinja'yı kullanabilirsiniz:
Sonuç : Jijnja, kurulduğunda Flask ile birlikte gelir, bu büyük bir artıdır. FastAPI'de Jinja'yı kurmanız ve kodunuzdaki şablonlar klasörünü tanımlamanız gerekir.
Bir noktada, uygulamanızı dağıtmak ve dünyaya göstermek isteyeceksiniz.
Flask, Web Sunucusu Ağ Geçidi Arayüzü anlamına gelen ve uzun yıllardır Python standardı olan WSGI adlı bir web sunucusu kullanır. Dezavantajı ise senkronize olmasıdır. Bu, bir sürü isteğiniz varsa, sıranın tamamlanması için sırada beklemeleri gerektiği anlamına gelir.
FastAPI, ASGI veya Asenkron Sunucu Ağ Geçidi Arayüzü adlı bir web sunucusu kullanır; bu, hızlı bir şekilde yanar, çünkü - iyi, tahmin ettiniz - Asenkron. Bu nedenle, gelen bir sürü isteğiniz varsa, işlenmeden önce diğerlerinin tamamlanmasını beklemek zorunda kalmazlar.
Sonuç : ASGI, istekleri eşzamansız olarak işledikleri için web uygulamalarınızda daha hızlı performans sağlar.
Drumroll, lütfen.
Kazanan… Şey, duruma göre değişir.
Bu şekilde seçim yapabilirsiniz.
İsterseniz Flask'ı kullanın :
Peki siz hangi çerçeveyi seçtiniz? Bize @VonageDev veya @tonyasims ile tweet atın .
İlk olarak https://learn.vonage.com/blog/2021/08/10/the-ultimate-face-off-flask-vs-fastapi/ adresinde yayınlanmıştır.
Plotwise'da büyük ölçüde Açık Sokak Haritalarına (OSM) güveniyoruz. Rota planlama işinde olduğumuz gibi sokaklarla (OSM tabiriyle yollar) ilgileniyoruz.
Şair değilim ama daha 8 yaşındayken, babamla birlikte mutfak masasında oturmuş, öğle yemeğinde neden daha fazla Parle Mango ısırığı yemem gerektiğine onu ikna etmeye çalışıyordum. Ammie'nin sofra takımı konusunda oldukça yaygaracı olduğunu ve babamın alışılmadık bir şekilde benim yaramaz fikirlerime açık olduğunu fark ettim.
Yaşadığın onca şeye rağmen hala burada olman harika değil mi? Şu anda ne yapıyorsun bilmiyorum ama dünyanın bir yerinde benim makalemi okuyorsun. Burada rastgele değilsin, değil mi? Muhtemelen başlığı gördünüz ve cevabı bilmek istediniz.
Dünyanın kaybını bir anda yaşıyorum. Son zamanlarda varoluşsal bir krizle uğraşıyorum, inançlarımı kaybediyorum ve kesinlikle ateist/laik oluyorum.
Bir front-end geliştiricisi olarak şu başlıktaki makalelere rastlamış olmalısınız: Buna cevap verebilmek için “React 18'de Neler Yeni?” başlığına bakacağız. resmi plana göre. React 17'ye kadar, tek olay dinleyicileri birden fazla setState düzenleme özelliğine sahiptir.
"Oreos", ailemin ten rengine ihanet eden Siyah millet dediği şeydir. Dışarıdan siyah gibi görünen ama yaptıklarıyla içlerinin beyaz olduğunu gösterenler onlardı.
Elvis Presley'in başarısı, bir evcil hayvan dükkanının değerindeki yavru köpekleri satın almak gibi, başkalarının yapamayacağı şeyleri yapmasına izin verdi.
Michael Patrick King, 'Ve Aynen Böyle...'nin uçurumlardan kaçınarak 'Sex and the City'ye sadık kalacağını açıkladı.
Yıldız bir performans için büyük pişmanlıklar yaşadı.
Game of Thrones'un kadrosu şimdi nerede?
Her hafta güncellenen mini bulmacamız, en sevdiğimiz HowStuffWorks okumalarımızı zeki ipuçlarıyla birleştiriyor!
Doğru deterjanı seçme konusunda endişelenmenize gerek kalmadan çamaşır yıkamak yeterince kötü. Peki en iyisi hangisi? Yoksa önemli mi?
Kentucky kırsalındaki Fugates ve Combs aileleri, genetik piyangoyu kaybettiler ve her ikisi de, evlenirken tenlerinin mavi görünmesine neden olan nadir bir çekinik özelliği paylaştılar. Bunun nedeni neydi? Ve ailelere ne oldu?
İki babasız erkek civciv, California akbabasını yok olmaktan kurtarmak için bir programda yetiştiriliyor. Böyle 'bakire' doğumlar nasıl mümkün olabilir?
Geriye dönüp bakıldığında, BoJack'in kanepede oturduğu, bira içtiği ve Horsin 'Around tekrar gösterilerini izlediği günlerden beri uzun bir yol kat ettiğini söylemek, gerilemesini kaçınılmaz kıldı. Bu sezon BoJack'in annesinin ona mutluluk girişimlerinin boşuna olduğunu söylemesi ile başladı - kırılmak onun doğuştan hakkıdır.
Şimdiye kadar, eğlence amaçlı kullanım için neredeyse tüm dronlar quadcopterlardı, ancak bu seçenek kesinlikle uçma söz konusu olduğunda tek seçenek değildir. Drone pazarı olgunlaşıyor ve Parrot şansını sabit kanatlı biriyle denemeye karar verdi.
Yılın bu zamanı. Target ve Costco ve Whole Foods'un değiştiği garip, uzak yerlerdeki o tuhaf, uzak akrabaları ziyaret etme zamanı.
PopcornTime aka temelde "Netflix for Torrents" harika bir yazılım parçasıdır, ancak şimdiye kadar aygıtları jailbreak yapmadan bir iPhone veya iPad'de kullanmak imkansızdı. Şimdi, kurnaz geliştiriciler, normal bir iOS cihazına yetkisiz yazılım yüklemenin bir yolunu buldular.
Cardi B ve Offset'in 3 yaşındaki kızı Kulture, yeni örgülü saç modelini Instagram'da sergiledi.
Selena Gomez daha önce arkadaşı Cara Delevingne için "Çok eğlenceli ve son derece maceracı" dedi.
Şarkıcı Perşembe günü fitness rutinini değiştirmeye karar verdi.
Jamie Dornan, Superman rolü için seçmelere katıldığını ancak Henry Cavill'e yenildiğini açıkladı; ve Marvel ile MCU'ya katılma hakkında konuştu.