FastAPI
- Okunuşu
- fest ey pi ay
Kısaca
FastAPI, standart tür ipuçlarıyla istekleri doğrulayan, veriyi dönüştüren ve OpenAPI dokümantasyonunu otomatik üreten modern bir Python API framework'üdür.
FastAPI nedir?
FastAPI, Sebastián Ramírez tarafından geliştirildi ve 2018'de yayımlandı. Temel fikri, Python'da zaten yazdığınız tür ipuçlarının API'nizi tarif etmesidir. item_id: int ile tanımlanmış bir yol fonksiyonu ve bir Pydantic modeliyle türlendirilmiş bir gövde, FastAPI'ye ne bekleyeceğini söyler; o da gelen her isteği buna göre doğrular ve veri uymadığında açık hatalar döndürür.
Aynı türler dokümantasyon da üretir. Her FastAPI uygulaması bir OpenAPI şeması ve /docs adresinde etkileşimli bir dokümantasyon sunar; burada her endpoint'i okuyabilir ve tarayıcıdan deneyebilirsiniz. Editörler de türleri anlar; böylece otomatik tamamlama kodun her yerinde çalışır. Depends ile dependency injection, veritabanı oturumları ve kimlik doğrulama gibi ortak parçaları ele alır.
FastAPI, Starlette ve ASGI standardı üzerine kuruludur; bu yüzden async endpoint'leri, WebSocket'leri ve arka plan görevlerini destekler ve Uvicorn gibi sunucularda çalışır. Özellikle makine öğrenmesi model API'leri ve ayrı bir ön yüze JSON sunan backend'ler için en popüler Python web framework'lerinden biri oldu.
Sık yapılan bir yanlış, FastAPI'nin otomatik olarak her şeyden hızlı olduğunu düşünmektir. Async I/O sayesinde en hızlı Python framework'leri arasındadır; ama bir async fonksiyonun içindeki engelleyici kod, örneğin senkron bir veritabanı sürücüsü, sunucuyu kilitler; sıradan def endpoint'lerinin bir thread havuzunda çalışmasının nedeni de tam olarak budur.
Önemli noktalar
- FastAPI, standart tür ipuçlarını kullanarak Python'da API'ler kurar.
- Türler, Pydantic modelleri üzerinden istek doğrulamasını yönlendirir.
- Etkileşimli OpenAPI dokümantasyonu /docs adresinde otomatik üretilir.
- Async öncelikli; Starlette ve ASGI üzerine kuruludur ve Uvicorn ile çalışır.
- Async endpoint'lerin içindeki engelleyici çağrılar bütün sunucuyu yavaşlatır.
Örnek
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel, Field
app = FastAPI()
class BookIn(BaseModel):
title: str = Field(min_length=1)
year: int = Field(ge=1450)
books: dict[int, BookIn] = {}
@app.post("/books", status_code=201)
def create_book(book: BookIn): # body validated against BookIn
book_id = len(books) + 1
books[book_id] = book
return {"id": book_id, **book.model_dump()}
@app.get("/books/{book_id}")
def get_book(book_id: int): # "abc" is rejected with a 422 error
if book_id not in books:
raise HTTPException(status_code=404, detail="Not found")
return books[book_id]
# Run with: uvicorn main:app --reload → docs at http://localhost:8000/docsSık sorulan sorular
FastAPI mi Django mu?
FastAPI, türe dayalı doğrulama ve async desteğiyle API'lere odaklanır. Django ise ORM, yönetim paneli, şablonlar ve kimlik doğrulama içeren tam bir framework'tür. FastAPI JSON API'lerine ve servislere, Django tam web uygulamalarına uyar.
FastAPI mi Flask mı?
İkisi de hafiftir. FastAPI, tür ipuçlarından otomatik doğrulama, async desteği ve üretilmiş dokümantasyon ekler. Flask ise daha eski ve daha basittir; çok büyük bir eklenti ekosistemi vardır.
Pydantic nedir?
Veriyi tür ipuçlarıyla doğrulayan bir Python kütüphanesidir. FastAPI, istek gövdelerini kontrol etmek ve yanıtları şekillendirmek için Pydantic modellerini kullanır.
İlgili sayfalar
- PythonProgramlama Dilleri, s. 26Python, okunaklı sözdizimiyle bilinen; veri bilimi, otomasyon ve web arka uçlarında yaygın kullanılan, genel amaçlı ve dinamik tipli bir programlama dilidir.
- REST APIBackend ve API'ler, s. 38REST API, verileri URL'lerle tanımlanan kaynaklar olarak sunan ve istemcilerin onları standart HTTP metotlarıyla okuyup değiştirmesini sağlayan web API'sidir.
- OpenAPIBackend ve API'ler, s. 32OpenAPI, HTTP API'lerini bir YAML veya JSON dosyasında tanımlayan açık bir standarttır; insanlar ve araçlar her endpoint'i, parametreyi ve yanıtı anlayabilir.
- APIBackend ve API'ler, s. 2API, bir yazılımın başka bir yazılımdan veri ya da işlem talep etmesini sağlayan, belgelenmiş ve öngörülebilir kurallar bütünüdür.
- DjangoBackend ve API'ler, s. 10Django, ORM, yönetim paneli, kimlik doğrulama ve güvenlik korumalarıyla gelen açık kaynaklı bir Python web framework'üdür; bu sayede ekipler hızlı geliştirir.
- FlaskBackend ve API'ler, s. 17Flask, yönlendirme, istek işleme ve şablonlar sağlayan, veritabanı ve proje yapısı gibi seçimleri geliştiriciye bırakan hafif bir Python web framework'üdür.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin