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

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

FastAPI, Python ile API'ler oluşturmak için yüksek performanslı modern bir web çerçevesidir. Kullanimi ve öğrenmesi kolay olacak şekilde tasarlanmıştır ve otomatik doğrulama, serileştirme ve otomatik etkileşimli API belgeleri gibi güçlü özellikler sunar. Ek olarak, herhangi bir şablon motoruyla çalışır ve projeniz için gerekli olan herhangi bir varsayılan şablon yapılandırmasını kullanmanıza izin verir.

Şimdi FastAPI detaylarına, özelliklerine ve etkili bir sekilde nasıl kullanilabilecegine dalalim. Bu makalenin ilerleyen kısımlarında IronPDF, Iron Software'den bir PDF oluşturma Python paketi de inceleyeceğiz.

FastAPI'nin Temel Özellikleri

  1. Yüksek Performans: FastAPI, Starlette'i web bölümleri için ve Pydantic'i veri bölümleri için kullandığı için, Node.js ve Go ile kıyaslanabilir hızıyla en hızlı Python çerçevelerinden biridir.
  2. Kullanım Kolaylığı: Yazilim minerallerini okumak icin harcanan zamani azaltmak ve sezgisel olmak icin tasarlanmistir. Cerceve, veri doğrulama ve serilestirme icin standart Python tur ipuclarindan faydalanir.
  3. Otomatik Etkileşimli Belgeler: FastAPI, OpenAPI ve JSON Şeması kullanarak otomatik olarak etkileşimli API belgeleri oluşturur ve /docs (Swagger UI) ve /redoc (ReDoc) üzerinden erişilebilir hale getirir. 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 tip kontrolü için mükemmel destek, geliştirmeyi hızlandırır ve hataları azaltır.
  5. Standardlara Dayali: OpenAPI ve JSON Schema: API'ler icin acik standartlarla uyumlu (ve tam uyumlu) dir.

Kurulum

FastAPI ve Uvicorn (bir ASGI sunucusu) dosyasini pip kullanarak yukleyebilirsiniz:

pip install fastapi
pip install "uvicorn[standard]"
pip install fastapi
pip install "uvicorn[standard]"
SHELL

Ilk FastAPI Uygulamanizi Oluşturma

Burada, FastAPI ile başlamak ve bir kullanıcı arayüzü üzerinden Python verilerini açığa çıkarmak için basit bir örnek var:

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 sunucusunu başlatacak ve kod değişikliklerine göre otomatik olarak yeniden yüklenecek. Etkileşimli API dokümantasyonuna http://127.0.0.1:8000/docs adresinden erişebilirsiniz.

İleri Düzey Özellikler

FastAPI, geniş bir gelişmiş özellik yelpazesini destekler ve karmaşık uygulamalar için uygundur:

  1. Dependency Injection: FastAPI, bagimliliklarinizi temiz ve etkin bir sekilde yonetmenize izin veren guclu bir bagimlilik enjeksiyon sistemi sunar.
  2. Arka Plan Gorevleri: Yanıt alındıktan sonra çalıştırılacak arka plan görevlerini tanımlayabilir, örneğin e-posta göndermek veya veri işlemek için.
  3. Websockets: FastAPI, istemci ve sunucu arasında gerçek zamanlı iletişim sağlamak için WebSockets'i destekler.
  4. Guvenlik: FastAPI, OAuth2, JWT tokenlari ve daha fazlasi dahil olmak üzere guvenlik ele alabilmek icin araclar içerir.
  5. Veritabani Entegrasyonu: FastAPI, SQLAlchemy veya Tortoise ORM gibi kütüphaneleri kullanarak veritabanlariyla kolayca entegre edilebilir.

Örnek: Bir CRUD API Oluşturma

Ögeleri yönetmek icin basit bir CRUD (Oluşturma, Okuma, Güncelleme, Silme) API'si oluşturalım.

  1. Veri Modelini Tanımlama:
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şturma:
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'i Tanıtma

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

IronPDF, HTML, CSS, görüntüler ve JavaScript'ten PDF oluşturmak, düzenlemek ve imzalamak için tasarlanmış güçlü bir Python kütüphanesidir. Düşük bellek kullanimiyla ticari seviyede performans sunar. Ana özellikler şunlardır:

HTML'den PDF'ye Dönüştürme

HTML dosyalarını, HTML metinlerini ve URL'leri PDF'ye dönüştürün. Örneğin, bir web sayfasını Chrome PDF cizime kullanarak PDF olarak render edin.

Platformlar Arası Destek

.NET Core, .NET Standard ve .NET Framework dahil çeşitli .NET platformlariyla uyumludur. Windows, Linux ve macOS'u destekler.

Duzenleme ve Imzalama

Özellikleri ayarlayin, sifreler ve izinlerle guvenlik ekleyin ve PDF'lerinize dijital imzalar uygulayın.

Sayfa Şablonları ve Ayarlar

Basliklar, alt basliklar, sayfa numaralari ve ayarlanabilir kenar bosluklari ile PDF'leri ozellestirin. Duyarlı mizanpajları ve özel kağıt boyutlarını destekler.

Standartlara Uyum

PDF/A ve PDF/UA gibi PDF standartlarına uyar. 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 Uretme

pip install fastapi
pip install ironPDF
pip install fastapi
pip install ironPDF
SHELL
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 öbeği, kullanıcı girdilerine dayalı olarak PDF belgeleri dinamik olarak oluşturmak ve bunları indirilebilir yanıt olarak sunmak için IronPDF'in FastAPI ile entegrasyonunu gösterir.

  1. Lisanas Anahtarını Ayarlama: IronPDF'in özelliklerini etkinlastirmak icin lisans anahtarini uygular.

  2. FastAPI Başlatma: HTTP isteklerini ele almak için bir FastAPI örneği (app) başlatır.

  3. Temel Rota Yöneticileri:

    • read_root(): Kök URL'ye (/) erişildiğinde "Hello IronPDF" belirten basit bir JSON mesajı ile yanıt verir.
    • read_item(): Bir item_id yol parametresi ve isteğe bağlı bir q sorgu parametresi kabul eder. Bu parametreler ile bir JSON yanıtı döndürür.
  4. PDF Oluşturma Rotası (/pdf):

    • get_pdf(): Bu eş zamanlı fonksiyon, /pdf uç noktasına isteğe bağlı greet1 ve greet2 isimli sorgu parametreleri ile GET isteklerini yönetir.
    • Şunları içeren bir HTML dizgesi oluşturur (content):
    • Belgenin kaynağını ve amacını belirten bir başlık.
      • Kullanıcı girdilerini kullanarak PDF oluşturmayı gösteren bir paragraf (greet1 ve greet2).
    • IronPDF'den ChromePdfRenderer() kullanarak HTML içeriğini bir PDF'ye dönüştürür (pdf = renderer.RenderHtmlAsPdf(content)).
    • Oluşturulan PDF'yi "fastapi.pdf" olarak kaydeder (pdf.SaveAs("fastapi.pdf")).
  5. PDF'in Sunulmasi:
    • PDF'nin tarayıcıda satır içi görüntülenmesi gerektiğini belirtmek için yanıt başlıklarını yapılandırır ("Content-Disposition": "inline; filename=sample.pdf").
    • Uygun medya türü ile oluşturulan PDF dosyasına işaret eden bir FileResponse nesnesi oluşturur ("application/pdf").
    • FileResponse nesnesini döndürür, bu da /pdf uç noktası erişildiğinde PDF belgesinin indirilmesini tetikler.

Bu kod parcacigi, IronPDF'in FastAPI ile nasıl sorunsuz bir sekilde entegre edilebilecegini ve kullanıcı girdilerine dayali olarak dinamik PDF belgeleri oluşturup sunabilecegini gösterir. Bu, HTTP uzerinden belgelerin aninda oluşturulmasi ve teslim edilmesi gereken uygulamalar icin PDF'lere HTML icerigi dönüştürme yetenegini gösterir.

Çıktı

Aşağıda, API'lerden oluşturulmuş 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 icin lisans anahtarinda calisir. IronPDF for Python, kullanicilarin satin almak oncesinde özellikleri denemelerine izin vermek icin ücretsiz deneme lisans anahtari sunar.

IronPDF paketini kullanmadan once lisans anahtarini scriptin basina yerlestirin:

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'ler oluşturmak icin guclu ve kullanıcı dostu bir frameworktur. FastAPI'nin yuksek performansi, otomatik dokümantasyonu ve gelişmiş özellikleri, hem acemi hem de deneyimli geliştiriciler icin muhtesem bir tercih yapmaktadir. Basit bir API veya karmasik bir web uygulamasi geliştiriyor olsaniz da, FastAPI basarılı olmaniz için ihtiyaçiniz olan aracları sunar.

IronPDF, HTML iceriginden PDF belgeleri oluşturmak, değiştirmek ve işlemler icin kullanilan guclu bir Python kutuphanesidir. HTML'den PDF'e dönüştürme, etkileşimli form oluşturma, PDF manipülasyonu (birlesik, bolme) ve metin cikarma gibi özellikler sunar. Dinamik PDF'ler oluşturmak ve çeşitli Python uygulamalarina entegre etmek icin uygun.

Sıkça Sorulan Sorular

Python uygulamalarında HTML içeriğini bir PDF'ye nasıl dönüştürebilirim?

IronPDF'un ChromePdfRenderer 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 entegrasyon sağlar.

API'ler oluşturmak için FastAPI'nin faydaları nelerdir?

FastAPI yüksek performans, otomatik doğrulama, serileştirme ve etkileşimli API dokümantasyonu sunar. Hızlı ve verimli olmasını sağlamak için Starlette ve Pydantic kullanırken, OpenAPI gibi açık standartları destekler.

FastAPI'de bir PDF belgesini nasıl sunabilirim?

IronPDF ile PDF belgesi oluşturup, FastAPI'nin FileResponse kullanarak geri döndürebilirsiniz. Bu yaklaşım, istemci isteklerine dayalı olarak dinamik PDF oluşturmayı ve sunmayı sağlar.

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 ani veri güncellemeleri veya canlı etkileşimler gerektiren uygulamalar için ideal bir seçimdir.

FastAPI veri doğrulama ve serileştirme işlemleri nasıl yapar?

FastAPI, veri doğrulama ve serileştirme işlemleri için Pydantic modelleri ve standart Python-tür ipuçları kullanır. Bu, giriş verilerinin doğru şekilde doğrulanmasını ve istenen formata dönüştürülmesini sağlar ve hata olasılığını azaltır.

FastAPI hangi güvenlik özelliklerini sunar?

FastAPI, OAuth2, JWT doğrulama ve bağımlılık enjeksiyonu gibi sağlam güvenlik özellikleri sunar, bu da geliştiricilerin minimum çabayla güvenli uygulamalar oluşturmasına olanak tanır.

IronPDF çapraz platform uygulamalarında kullanılabilir mi?

Evet, IronPDF, Windows, Linux ve macOS'u destekleyen çapraz platform olarak tasarlanmıştır. Bu, farklı işletim sistemlerinde çalışan uygulamalara PDF oluşturma entegre etmek isteyen geliştiriciler için çok yönlü bir seçim yapar.

FastAPI nasıl geliştirici verimliliğini artırır?

FastAPI, otomatik API dokümantasyonu, kod tamamlama ve tür kontrolü sunarak geliştirici verimliliğini artırır. Bu, geniş kapsamlı manuel dokümantasyon ihtiyaçını azaltır ve geliştirme sürecinde erken hataların yakalanmasına yardımcı olur.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında lisans derecesine sahiptir (Carleton Üniversitesi) ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirme üzerine uzmanlaşmıştır. Kullanıcı dostu ve estetik açıdan hoş arayüzler tasarlamaya tutkuyla bağlı olan Curtis, modern çerç...

Daha Fazlasını Oku

Iron Destek Ekibi

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