Altbilgi içeriğine atla
ÜRüN KARşıLAşTıRMALARı

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

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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]"
SHELL

İ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}
PYTHON

Uygulamayı çalıştırmak için Uvicorn kullanın:

uvicorn main:app --reload
uvicorn main:app --reload
SHELL

Bu 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:

  1. 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.
  2. 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.
  3. WebSockets: FastAPI, müşteri ve sunucu arasında gerçek zamanlı iletişime olanak tanır.
  4. Güvenlik: FastAPI, OAuth2, JWT jetonları ve daha fazlasını içeren güvenlik işlemleri için araçlar içerir.
  5. 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.

  1. 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 = None
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 = None
PYTHON
  1. 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"}
PYTHON

IronPDF Tanıtımı

FastAPI Python (Geliştiriciler İçin Nasıl Çalışır): Şekil 1

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)
PYTHON

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.

  1. Lisans Anahtarını Ayarlama: IronPDF lisans anahtarını uygulayarak özelliklerini etkinleştirir.

  2. FastAPI Başlatma: FastAPI örneğini başlatır (app), HTTP isteklerini işlemek için.

  3. 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(): Bir item_id yol parametresini ve isteğe bağlı bir q sorgu parametresini kabul eder. Bu parametrelerle bir JSON yanıtı döner.
  4. PDF Oluşturma Yolu (/pdf):

    • get_pdf(): Bu async fonksiyon, /pdf uç noktasına isteğe bağlı greet1 ve greet2 adı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 (greet1 ve greet2).
    • 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.
  5. 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 FileResponse nesnesi oluşturur ("application/pdf").
    • FileResponse nesnesini döndürür, bu da /pdf uç noktasına erişildiğinde PDF belgesinin indirilmesini tetikler.

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.

FastAPI Python (Geliştiriciler İçin Nasıl Çalışır): Şekil 2

PDF

FastAPI Python (Geliştiriciler İçin Nasıl Çalışır): Şekil 3

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"
PYTHON

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.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara