FastAPI Python (jak to działa dla programistów)
FastAPI to nowoczesny, wysokowydajny framework internetowy do tworzenia interfejsów API w języku Python. Zostało zaprojektowane tak, aby było łatwe w użyciu i nauce, a jednocześnie oferowało zaawansowane funkcje, takie jak automatyczna walidacja, serializacja oraz automatyczna interaktywna dokumentacja API. Ponadto współpracuje z dowolnym silnikiem szablonów i pozwala na użycie dowolnej domyślnej konfiguracji szablonów potrzebnej w projekcie.
Przyjrzyjmy się bliżej FastAPI, jego funkcjom i sposobom efektywnego wykorzystania. W dalszej części tego artykułu przyjrzymy się również IronPDF, pakietowi do generowania plików PDF w języku Python firmy Iron Software.
Najważniejsze cechy FastAPI
- Wysoka wydajność: FastAPI jest jednym z najszybszych dostępnych frameworków w języku Python, porównywalnym z Node.js i Go, dzięki wykorzystaniu biblioteki Starlette do obsługi elementów internetowych oraz Pydantic do obsługi danych.
- Łatwość użytkowania: Została zaprojektowana tak, aby była intuicyjna i skracała czas poświęcany na czytanie dokumentacji. Framework wykorzystuje standardowe wskazówki typu w języku Python do walidacji danych i serializacji.
- Automatyczna dokumentacja interaktywna: FastAPI automatycznie generuje interaktywną dokumentację API przy użyciu OpenAPI i JSON Schema, dostępną poprzez /docs (Swagger UI) i /redoc (ReDoc). Wszelkie aktualizacje API są automatycznie odzwierciedlane w dokumentacji.
- Obsługa edytorów: Doskonała obsługa autouzupełniania kodu i sprawdzania typów w edytorach takich jak VS Code, co przyspiesza tworzenie oprogramowania i ogranicza liczbę błędów.
- Oparte na standardach: Oparte na (i w pełni zgodne z) otwartymi standardami dla interfejsów API: OpenAPI i JSON Schema.
Instalacja
Możesz zainstalować FastAPI i Uvicorn (serwer ASGI) za pomocą pip:
pip install fastapi
pip install "uvicorn[standard]"pip install fastapi
pip install "uvicorn[standard]"Tworzenie pierwszej aplikacji FastAPI
Oto prosty przykład, który pomoże Ci rozpocząć pracę z FastAPI i udostępnić dane w języku Python za pośrednictwem interfejsu użytkownika:
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}Aby uruchomić aplikację, użyj Uvicorn:
uvicorn main:app --reloaduvicorn main:app --reloadTo polecenie uruchomi serwer deweloperski i automatycznie odświeży stronę po wprowadzeniu zmian w kodzie. Dostęp do interaktywnej dokumentacji API można uzyskać pod adresem http://127.0.0.1:8000/docs.
Zaawansowane funkcje
FastAPI obsługuje szeroki zakres zaawansowanych funkcji, dzięki czemu nadaje się do złożonych aplikacji:
- Wstrzykiwanie zależności: FastAPI zapewnia potężny system wstrzykiwania zależności, który pozwala na przejrzyste i wydajne zarządzanie zależnościami.
- Zadania w tle: Można zdefiniować zadania w tle, które mają być uruchamiane po zwróceniu odpowiedzi. Jest to przydatne w przypadku zadań takich jak wysyłanie wiadomości e-mail lub przetwarzanie danych.
- WebSockets: FastAPI obsługuje WebSockets, umożliwiając komunikację w czasie rzeczywistym między klientem a serwerem.
- Bezpieczeństwo: FastAPI zawiera narzędzia do obsługi zabezpieczeń, w tym OAuth2, tokeny JWT i inne.
- Integracja z bazami danych: FastAPI można łatwo zintegrować z bazami danych przy użyciu bibliotek takich jak SQLAlchemy lub Tortoise-ORM.
Przykład: Tworzenie interfejsu API CRUD
Zbudujmy proste API CRUD (Create, Read, Update, Delete) do zarządzania elementami.
- Zdefiniuj model danych:
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- Utwórz aplikację FastAPI:
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"}Przedstawiamy IronPDF

IronPDF to potężna biblioteka w języku Python przeznaczona do tworzenia, edycji i podpisywania plików PDF na podstawie kodu HTML, CSS, obrazów i JavaScript. Oferuje wydajność na poziomie komercyjnym przy niewielkim zużyciu pamięci. Najważniejsze cechy to:
Konwersja HTML do PDF
Konwertuj pliki HTML, ciągi znaków HTML i adresy URL na pliki PDF. Na przykład, renderuj stronę internetową jako plik PDF przy użyciu renderera PDF przeglądarki Chrome.
Obsługa wielu platform
Kompatybilny z różnymi platformami .NET, w tym .NET Core, .NET Standard i .NET Framework. Obsługuje systemy Windows, Linux i macOS.
Redakcja i podpisanie
Ustawiaj właściwości, dodawaj zabezpieczenia za pomocą haseł i uprawnień oraz stosuj podpisy cyfrowe w plikach PDF.
Szablony stron i ustawienia
Dostosuj pliki PDF, dodając nagłówki, stopki, numery stron i regulowane marginesy. Obsługuje responsywne układy i niestandardowe rozmiary papieru.
Zgodność z normami
Zgodność ze standardami PDF, takimi jak PDF/A i PDF/UA. Obsługuje kodowanie znaków UTF-8 oraz pliki takie jak obrazy, CSS i czcionki.
Generowanie dokumentów PDF przy użyciu IronPDF i FastAPI
pip install fastapi
pip install ironPDFpip install fastapi
pip install ironPDFfrom 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)Wyjaśnienie kodu
Ten fragment kodu pokazuje integrację IronPDF z FastAPI w celu dynamicznego generowania dokumentów PDF na podstawie danych wprowadzonych przez użytkownika i udostępniania ich jako odpowiedzi do pobrania.
Ustawianie klucza licencyjnego: Stosuje klucz licencyjny IronPDF w celu włączenia jego funkcji.
Inicjalizacja FastAPI: Inicjalizuje instancję FastAPI (
app) w celu obsługi żądań HTTP.Podstawowe moduły obsługi tras:
read_root(): Odpowiada prostą wiadomością JSON o treści "Hello IronPDF" przy dostępie do adresu URL katalogu głównego (/).read_item(): Akceptuje parametr ścieżkiitem_idoraz opcjonalny parametr zapytaniaq. Zwraca odpowiedź JSON z tymi parametrami.
Generowanie plików PDF (
/pdf):get_pdf(): Ta funkcja asynchroniczna obsługuje żądania GET kierowane do punktu końcowego/pdfz opcjonalnymi parametrami zapytania o nazwachgreet1igreet2.- Tworzy ciąg znaków HTML (
content), który zawiera:- Nagłówek wskazujący pochodzenie i cel dokumentu.
- Akapit pokazujący generowanie pliku PDF na podstawie danych wprowadzonych przez użytkownika (
greet1igreet2).
- Wykorzystuje
ChromePdfRenderer()z IronPDF do renderowania treści HTML do formatu PDF (pdf = renderer.RenderHtmlAsPdf(content)). - Zapisuje wygenerowany plik PDF jako "fastapi.pdf" (
pdf.SaveAs("fastapi.pdf")).
- Udostępnianie pliku PDF:
- Konfiguruje nagłówki odpowiedzi, aby określić, że plik PDF powinien być wyświetlany bezpośrednio w przeglądarce (
"Content-Disposition": "inline; filename=sample.pdf"). - Tworzy obiekt
FileResponsewskazujący na wygenerowany plik PDF z odpowiednim typem nośnika ("application/pdf"). - Zwraca obiekt
FileResponse, który uruchamia pobieranie dokumentu PDF po uzyskaniu dostępu do punktu końcowego/pdf.
- Konfiguruje nagłówki odpowiedzi, aby określić, że plik PDF powinien być wyświetlany bezpośrednio w przeglądarce (
Ten fragment kodu ilustruje, w jaki sposób IronPDF można płynnie zintegrować z FastAPI w celu dynamicznego generowania i udostępniania dokumentów PDF na podstawie danych wprowadzonych przez użytkownika. Prezentuje możliwość konwersji treści HTML do formatu PDF, dzięki czemu nadaje się do zastosowań wymagających generowania dokumentów w locie i dostarczania ich przez HTTP.
Wynik
Poniżej przedstawiono wynik generowany przez Swagger na podstawie interfejsów API


Licencja IronPDF
IronPDF działa na kluczu licencyjnym dla języka Python. IronPDF for Python oferuje bezplatną licencję probną, aby umożliwić użytkownikom zapoznanie się z funkcjami przed zakupem.
Umieść klucz licencyjny na początku skryptu przed użyciem pakietu IronPDF:
from ironpdf import *
# Apply your license key
License.LicenseKey = "key"from ironpdf import *
# Apply your license key
License.LicenseKey = "key"Wnioski
FastAPI to potężny i łatwy w użyciu framework do tworzenia interfejsów API w języku Python. FastAPI charakteryzuje się wysoką wydajnością, automatyczną dokumentacją i zaawansowanymi funkcjami, co czyni go doskonałym wyborem zarówno dla początkujących, jak i doświadczonych programistów. Niezależnie od tego, czy tworzysz proste API, czy złożoną aplikację internetową, FastAPI zapewnia narzędzia niezbędne do osiągnięcia sukcesu.
IronPDF to solidna biblioteka w języku Python służąca do tworzenia, edycji i renderowania dokumentów PDF na podstawie treści HTML. Oferuje takie funkcje, jak konwersja HTML do PDF, tworzenie interaktywnych formularzy, obróbka plików PDF (łączenie, dzielenie) oraz wyodrębnianie tekstu. Idealny do łatwego generowania dynamicznych plików PDF i integracji z różnymi aplikacjami w języku Python.
Często Zadawane Pytania
Jak mogę przekonwertować zawartość HTML do formatu PDF w aplikacji napisanej w języku Python?
Możesz użyć ChromePdfRenderer firmy IronPDF do konwersji treści HTML, CSS i JavaScript do pliku PDF. Umożliwia to płynną integrację z aplikacjami Python w celu generowania dokumentów PDF na podstawie treści internetowych.
Jakie są zalety korzystania z FastAPI do tworzenia interfejsów API?
FastAPI oferuje wysoką wydajność, automatyczną walidację, serializację oraz interaktywną dokumentację API. Wykorzystuje biblioteki Starlette i Pydantic, aby zapewnić szybkość i wydajność porównywalną z Node.js i Go, jednocześnie obsługując otwarte standardy, takie jak OpenAPI.
Jak mogę udostępnić dokument PDF w FastAPI?
Możesz udostępnić dokument PDF w FastAPI, generując go za pomocą IronPDF i zwracając go przy użyciu FileResponse FastAPI. Takie podejście pozwala na dynamiczne tworzenie i udostępnianie plików PDF na podstawie żądań klientów.
Co sprawia, że FastAPI nadaje się do aplikacji działających w czasie rzeczywistym?
FastAPI obsługuje WebSockets, które umożliwiają komunikację w czasie rzeczywistym między klientem a serwerem, co czyni go idealnym wyborem dla aplikacji wymagających natychmiastowej aktualizacji danych lub interakcji na żywo.
W jaki sposób FastAPI obsługuje walidację i serializację danych?
FastAPI wykorzystuje modele Pydantic i standardowe wskazówki dotyczące typów w języku Python do obsługi walidacji i serializacji danych. Zapewnia to prawidłową walidację danych wejściowych i konwersję do pożądanego formatu, co zmniejsza ryzyko wystąpienia błędów.
Jakie funkcje bezpieczeństwa oferuje FastAPI?
FastAPI zapewnia solidne funkcje bezpieczeństwa, w tym OAuth2, uwierzytelnianie JWT i wstrzykiwanie zależności, umożliwiając programistom tworzenie bezpiecznych aplikacji przy minimalnym wysiłku.
Czy IronPDF może być używany w aplikacjach wieloplatformowych?
Tak, IronPDF jest zaprojektowany jako rozwiązanie wieloplatformowe, obsługujące systemy Windows, Linux i macOS. To sprawia, że jest to wszechstronny wybór dla programistów, którzy chcą zintegrować generowanie plików PDF z aplikacjami działającymi na różnych systemach operacyjnych.
W jaki sposób FastAPI zwiększa wydajność programistów?
FastAPI zwiększa wydajność programistów, oferując automatyczną dokumentację API, autouzupełnianie kodu i sprawdzanie typów. Zmniejsza to potrzebę tworzenia obszernej dokumentacji ręcznej i pomaga wychwycić błędy na wczesnym etapie procesu programowania.










