FastAPI Python (Geliştiriciler İçin Nasıl Çalışır)
FastAPI, Python ile API oluşturmada modern, yüksek performanslı bir web çerçevesidir. Kullanımı kolay ve öğrenmesi basit olacak şekilde tasarlanmıştır, aynı zamanda otomatik doğrulama, seri hale getirme ve otomatik etkileşimli API belgeleri gibi güçlü özellikler sunar. Ek olarak, herhangi bir şablon motoru ile çalışır ve projeniz için gereken varsayılan şablon yapılandırmasını kullanmanıza olanak tanır.
Şimdi FastAPI detaylarına, özelliklerine ve onu etkili bir şekilde nasıl kullanacağınıza dalalım. Bu makalenin ilerleyen bölümlerinde IronPDF'i de inceleyeceğiz, Iron Software tarafından hazırlanan bir PDF oluşturma Python paketi.
FastAPI'nin Temel Özellikleri
- Yüksek Performans: FastAPI, Starlette'in web kısımlarını ve Pydantic'in veri kısımlarını kullandığı için, Node.js ve Go ile karşılaştırılabilen en hızlı Python çerçevelerinden biridir.
- Kullanım Kolaylığı: Kullanımı sezgisel olacak şekilde tasarlanmıştır ve dokümantasyon okuma süresini azaltır. Çerçevenin veri doğrulama ve seri hale getirme için standart Python tür ipuçlarından faydalanır.
- Otomatik Etkileşimli Belgeler: FastAPI, OpenAPI ve JSON Şeması kullanarak otomatik olarak etkileşimli API belgeleri üretir, /docs (Swagger UI) ve /redoc (ReDoc) üzerinden erişilebilir. API'deki herhangi bir güncelleme otomatik olarak belgelerde yansıtılır.
- Editör Desteği: VS Code gibi editörlerde kod tamamlama ve tür denetimi için mükemmel destek, geliştirme sürecini hızlandırır ve hataları azaltır.
- Standartlara Dayalı: APIs için açık standartlara dayalıdır (ve onlarla tamamen uyumludur): OpenAPI ve JSON Şeması.
Kurulum
FastAPI ve pip kullanarak Uvicorn (bir ASGI sunucusu) yükleyebilirsiniz:
pip install fastapi
pip install "uvicorn[standard]"pip install fastapi
pip install "uvicorn[standard]"İlk FastAPI Uygulamanızı Oluşturma
İşte FastAPI ile başlamanız ve Python verilerini bir kullanıcı arayüzü üzerinden sergilemeniz için basit bir örnek:
from fastapi import FastAPI
# Create a FastAPI 'app' instance
app = FastAPI()
# Root path operation
@app.get("/")
def read_root():
return {"Hello": "World"}
# Path operation for items including query parameter 'q'
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}from fastapi import FastAPI
# Create a FastAPI 'app' instance
app = FastAPI()
# Root path operation
@app.get("/")
def read_root():
return {"Hello": "World"}
# Path operation for items including query parameter 'q'
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}Uygulamayı çalıştırmak için Uvicorn kullanın:
uvicorn main:app --reloaduvicorn main:app --reloadBu komut, bir geliştirme sunucusu başlatacak ve kod değişiklikleri için otomatik olarak yeniden yüklenecektir. Etkileşimli API belgelerine http://127.0.0.1:8000/docs adresinden erişebilirsiniz.
Gelişmiş Özellikler
FastAPI, gelişmiş özelliklerin geniş bir yelpazesini destekler ve bu da onu karmaşık uygulamalar için uygundur:
- Bağımlılık Enjeksiyonu: FastAPI, bağımlılıkları temiz ve verimli bir şekilde yönetmenizi sağlayan güçlü bir bağımlılık enjeksiyonu sistemi sunar.
- Arka Plan Görevleri: Bir yanıt döndükten sonra çalıştırılacak arka plan görevleri tanımlayabilirsiniz, bu e-posta gönderme veya veri işleme gibi görevler için kullanışlıdır.
- WebSockets: FastAPI, müşteri ve sunucu arasında gerçek zamanlı iletişime olanak tanır.
- Güvenlik: FastAPI, OAuth2, JWT jetonları ve daha fazlasını içeren güvenlik işlemleri için araçlar içerir.
- Veritabanı Entegrasyonu: FastAPI, SQLAlchemy veya Tortoise-ORM gibi kütüphaneleri kullanarak veritabanları ile kolayca entegre edilebilir.
Örnek: CRUD API Oluşturma
Öğeleri yönetmek için basit bir CRUD (Oluştur, Oku, Güncelle, Sil) API'si oluşturalım.
- Veri Modelini Tanımlayın:
from pydantic import BaseModel
# Define a Pydantic model for the item with default description and tax
class Item(BaseModel):
name: str
description: str = None
price: float
tax: float = Nonefrom pydantic import BaseModel
# Define a Pydantic model for the item with default description and tax
class Item(BaseModel):
name: str
description: str = None
price: float
tax: float = None- FastAPI Uygulamasını Oluşturun:
from fastapi import FastAPI, HTTPException
# Initialize 'app' instance and an empty 'items' dictionary
app = FastAPI()
items = {}
# Create operation: Add a new item
@app.post("/items/")
def create_item(item: Item):
item_id = len(items) + 1
items[item_id] = item
return item
# Read operation: Retrieve an item by 'item_id'
@app.get("/items/{item_id}")
def read_item(item_id: int):
if item_id not in items:
raise HTTPException(status_code=404, detail="Item not found")
return items[item_id]
# Update operation: Replace an existing item
@app.put("/items/{item_id}")
def update_item(item_id: int, item: Item):
if item_id not in items:
raise HTTPException(status_code=404, detail="Item not found")
items[item_id] = item
return item
# Delete operation: Remove an item by 'item_id'
@app.delete("/items/{item_id}")
def delete_item(item_id: int):
if item_id not in items:
raise HTTPException(status_code=404, detail="Item not found")
del items[item_id]
return {"message": "Item deleted"}from fastapi import FastAPI, HTTPException
# Initialize 'app' instance and an empty 'items' dictionary
app = FastAPI()
items = {}
# Create operation: Add a new item
@app.post("/items/")
def create_item(item: Item):
item_id = len(items) + 1
items[item_id] = item
return item
# Read operation: Retrieve an item by 'item_id'
@app.get("/items/{item_id}")
def read_item(item_id: int):
if item_id not in items:
raise HTTPException(status_code=404, detail="Item not found")
return items[item_id]
# Update operation: Replace an existing item
@app.put("/items/{item_id}")
def update_item(item_id: int, item: Item):
if item_id not in items:
raise HTTPException(status_code=404, detail="Item not found")
items[item_id] = item
return item
# Delete operation: Remove an item by 'item_id'
@app.delete("/items/{item_id}")
def delete_item(item_id: int):
if item_id not in items:
raise HTTPException(status_code=404, detail="Item not found")
del items[item_id]
return {"message": "Item deleted"}IronPDF Tanıtımı

IronPDF, HTML, CSS, görüntüler ve JavaScript'ten PDF'ler oluşturan, düzenleyen ve imzalayan güçlü bir Python kütüphanesidir. Düşük bellek kullanımıyla ticari düzeyde performans sunar. Önemli özellikler şunları içerir:
HTML'den PDF'ye Dönüşüm
HTML dosyalarını, HTML dizelerini ve URL'leri PDF'ye dönüştürün. Örneğin, bir web sayfasını Chrome PDF render edici kullanarak PDF olarak işleyin.
Çapraz Platform Desteği
.NET Core, .NET Standard ve .NET Framework gibi çeşitli .NET platformlarıyla uyumludur. Windows, Linux ve macOS'u destekler.
Düzenleme ve İmzalama
Özellikleri ayarlayın, parolalar ve izinlerle güvenlik ekleyin ve PDF'lerinizi dijital olarak imzalayın.
Sayfa Şablonları ve Ayarları
Başlıklar, altbilgiler, sayfa numaraları ve ayarlanabilir kenar boşlukları ile PDF'leri özelleştirin. Duyarlı düzenleri ve özel kağıt boyutlarını destekler.
Standart Uyumluluğu
PDF/A ve PDF/UA gibi PDF standartlarına uygunluk gösterir. UTF-8 karakter kodlamasını destekler ve görüntüler, CSS ve yazı tipleri gibi varlıkları işler.
IronPDF ve FastAPI Kullanarak PDF Belgeleri Üretin
pip install fastapi ironpdf
from fastapi import FastAPI
from fastapi.responses import FileResponse
from ironpdf import *
# Apply your IronPDF license key
License.LicenseKey = "key"
# Initialize 'app' instance
app = FastAPI()
# Route for simple greeting
@app.get("/")
def read_root():
return {"Hello": "IronPDF"}
# Route that reads items with path and query parameters
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
# Route for generating a PDF document
@app.get("/pdf")
async def get_pdf(greet1: str = None, greet2: str = None):
# Use ChromePdfRenderer to create PDF from HTML
renderer = ChromePdfRenderer()
content = "<h1>Document Generated using IronPDF with FastAPI GET</h1>"
content += "<p> Demonstrate PDF generation using User Inputs</p>"
content += f"<p>Greetings from: {greet1}</p>"
content += f"<p>And Greetings from: {greet2}</p>"
pdf = renderer.RenderHtmlAsPdf(content)
# Save the PDF to a file
pdf.SaveAs("fastapi.pdf")
# Create a response with the generated PDF
headers = {
"Content-Disposition": "inline; filename=sample.pdf"
}
return FileResponse("fastapi.pdf", media_type="application/pdf", headers=headers)from fastapi import FastAPI
from fastapi.responses import FileResponse
from ironpdf import *
# Apply your IronPDF license key
License.LicenseKey = "key"
# Initialize 'app' instance
app = FastAPI()
# Route for simple greeting
@app.get("/")
def read_root():
return {"Hello": "IronPDF"}
# Route that reads items with path and query parameters
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
# Route for generating a PDF document
@app.get("/pdf")
async def get_pdf(greet1: str = None, greet2: str = None):
# Use ChromePdfRenderer to create PDF from HTML
renderer = ChromePdfRenderer()
content = "<h1>Document Generated using IronPDF with FastAPI GET</h1>"
content += "<p> Demonstrate PDF generation using User Inputs</p>"
content += f"<p>Greetings from: {greet1}</p>"
content += f"<p>And Greetings from: {greet2}</p>"
pdf = renderer.RenderHtmlAsPdf(content)
# Save the PDF to a file
pdf.SaveAs("fastapi.pdf")
# Create a response with the generated PDF
headers = {
"Content-Disposition": "inline; filename=sample.pdf"
}
return FileResponse("fastapi.pdf", media_type="application/pdf", headers=headers)Kod Açıklaması
Bu kod parçası, IronPDF'ü FastAPI ile entegre ederek kullanıcı girdilerine dayalı dinamik PDF belgeleri oluşturmayı ve bunları indirilebilir yanıt olarak sunmayı gösterir.
Lisans Anahtarını Ayarlama: IronPDF lisans anahtarını uygulayarak özelliklerini etkinleştirir.
FastAPI Başlatma: FastAPI örneğini başlatır (
app), HTTP isteklerini işlemek için.Temel Yol İşleyicileri:
read_root(): Kök URL'ye (/) erişildiğinde "Hello IronPDF" şeklinde basit bir JSON mesajıyla yanıt verir.read_item(): Biritem_idyol parametresini ve isteğe bağlı birqsorgu parametresini kabul eder. Bu parametrelerle bir JSON yanıtı döner.
PDF Oluşturma Yolu (
/pdf):get_pdf(): Bu async fonksiyon,/pdfuç noktasına isteğe bağlıgreet1vegreet2adında sorgu parametreleri ile GET isteklerini işler.- Aşağıdakileri içeren bir HTML dizesi oluşturur (
content):- Belgenin kökenini ve amacını belirten bir başlık.
- Kullanıcı girdileri kullanılarak PDF oluşturmayı gösteren bir paragraf (
greet1vegreet2).
- IronPDF'den
ChromePdfRenderer()kullanarak HTML içeriğini bir PDF'ye (pdf = renderer.RenderHtmlAsPdf(content)) dönüştürür. - Oluşturulan PDF'yi 'fastapi.pdf' olarak (
pdf.SaveAs("fastapi.pdf")) kaydeder.
- PDF'yi Sunmak:
- Yanıt başlıklarını PDF'nin tarayıcıda satır içi görüntülenmesini belirtecek şekilde yapılandırır (
"Content-Disposition": "inline; filename=sample.pdf"). - Üretilen PDF dosyasını uygun medya tipi ile işaret eden bir
FileResponsenesnesi oluşturur ("application/pdf"). FileResponsenesnesini döndürür, bu da/pdfuç noktasına erişildiğinde PDF belgesinin indirilmesini tetikler.
- Yanıt başlıklarını PDF'nin tarayıcıda satır içi görüntülenmesini belirtecek şekilde yapılandırır (
Bu kod parçası, IronPDF'ün FastAPI ile sorunsuz bir şekilde entegre edilerek kullanıcı girdilerine dayalı olarak dinamik PDF belgeleri oluşturma ve sunma yeteneğini gösterir. HTML içeriğini PDF'ye dönüştürme yeteneğini sergiler, bu da HTTP üzerinden belge üretimi ve teslimatı gerektiren uygulamalar için uygundur.
Çıktı
Aşağıda, API'lerden türetilen swagger çıktısı gösterilmektedir.


IronPDF Lisansı
IronPDF, Python lisans anahtarı üzerinde çalışır. IronPDF for Python, kullanıcıların satın almadan önce özellikleri keşfetmesine olanak tanıyan ücretsiz bir deneme lisans anahtarı sunar.
Lisans Anahtarını, IronPDF paketini kullanmadan önce komut dosyasının başına yerleştirin:
from ironpdf import *
# Apply your license key
License.LicenseKey = "key"from ironpdf import *
# Apply your license key
License.LicenseKey = "key"Sonuç
FastAPI, Python'da API oluşturmak için güçlü ve kolay bir çerçeve. FastAPI'nin yüksek performansı, otomatik belgeleri ve gelişmiş özellikleri, hem yeni başlayanlar hem de deneyimli geliştiriciler için mükemmel bir seçimdir. Basit bir API veya karmaşık bir web uygulaması oluşturuyor olun, FastAPI, başarılı olmanız için gereken araçları sağlar.
IronPDF, HTML içeriğinden PDF belgeleri oluşturmak, düzenlemek ve işlemek için güçlü bir Python kütüphanesidir. HTML'den PDF'ye dönüştürme, etkileşimli form oluşturma, PDF düzenleme (birleştirme, ayırma) ve metin çıkarma gibi özellikler sunar. Kolayca dinamik PDF'ler üretmek ve çeşitli Python uygulamalarına entegre etmek için idealdir.
Sıkça Sorulan Sorular
Bir Python uygulamasında HTML içeriği nasıl PDF'ye dönüştürebilirim?
IronPDF'ün ChromePdfRenderer özelliğini kullanarak HTML, CSS ve JavaScript içeriğini bir PDF dosyasına dönüştürebilirsiniz. Bu, web içeriğinden PDF belgeleri oluşturmak için Python uygulamalarına sorunsuz bir entegrasyon sağlar.
API oluşturmak için FastAPI kullanmanın avantajları nelerdir?
FastAPI, yüksek performans, otomatik doğrulama, serileştirme ve etkileşimli API belgeleri sunar. Hız ve verimliliği sağlamak için Starlette ve Pydantic'ten yararlanır ve Node.js ve Go ile karşılaştırılabilir, aynı zamanda OpenAPI gibi açık standartları destekler.
FastAPI'de bir PDF belgesi nasıl sunulur?
IronPDF ile oluşturulan PDF belgesini FastAPI'de sunabilir ve FileResponse'u kullanarak geri döndürebilirsiniz. Bu yaklaşım, istemci taleplerine göre dinamik olarak PDF'ler oluşturup sunmanıza olanak tanır.
FastAPI'yi gerçek zamanlı uygulamalar için uygun kılan nedir?
FastAPI, istemci ve sunucu arasında gerçek zamanlı iletişimi sağlayan WebSockets'i destekler, bu da anında veri güncellemeleri veya canlı etkileşimler gerektiren uygulamalar için ideal bir seçenek haline getirir.
FastAPI veri doğrulama ve serileştirme işlemlerini nasıl ele alıyor?
FastAPI, veri doğrulama ve serileştirme işlemlerini yürütmek için Pydantic modelleri ve standart Python-type ipuçlarını kullanır. Bu, giriş verilerinin doğru bir şekilde doğrulanmasını ve istenen biçime dönüştürülmesini garanti eder, hata olasılığını azaltır.
FastAPI hangi güvenlik özelliklerini sunar?
FastAPI, OAuth2, JWT kimlik doğrulama ve bağımlılık enjeksiyonu gibi sağlam güvenlik özellikleri sunar, bu da geliştiricilerin minimum çaba ile güvenli uygulamalar oluşturmalarına izin verir.
IronPDF'ü çapraz platform uygulamalarında kullanabilir miyim?
Evet, IronPDF, Windows, Linux ve macOS'u destekleyen çapraz platform uyumlu olacak şekilde tasarlanmıştır. Bu, farklı işletim sistemlerinde çalışan uygulamalara PDF oluşturmayı entegre etmek isteyen geliştiriciler için çok yönlü bir seçenek haline getirir.
FastAPI geliştirici üretkenliğini nasıl arttırır?
FastAPI, otomatik API belgeleri, kod tamamlama ve tür kontrolü sunarak geliştirici üretkenliğini arttırır. Bu, geniş kapsamlı manuel dokümantasyon ihtiyacını azaltır ve geliştirme sürecinin başında hataların yakalanmasına yardımcı olur.










