製品比較

FastAPI Python(開発者向けの動作方法)

公開済み 2024年9月29日
共有:

イントロダクション

FastAPIは、PythonでAPIを構築するための最新の高性能なWebフレームワークです。 それは、簡単に使用および学習できるように設計されており、自動検証、シリアライゼーション、自動インタラクティブAPIドキュメントといった強力な機能を提供します。 さらに、任意のテンプレートエンジンと互換性があり、プロジェクトに必要な任意のデフォルトテンプレート設定を使用することができます。

詳細に踏み込んでみましょう。FastAPI、その機能、およびそれを効果的に使用する方法。 この記事の後半で、我々はまた、次のことを見ていきます。IronPDFIronPDF for Python からの PDF 生成 Python パッケージIron Software.

FastAPIの主な機能

  1. 高パフォーマンス: FastAPIは、ウェブ部分にStarletteを、データ部分にPydanticを使用しているため、Node.jsやGoに匹敵するほど高速なPythonフレームワークの一つです。

  2. 使いやすさ: 直感的に使用できるように設計されており、ドキュメントを読む時間を短縮します。 フレームワークは、データの検証とシリアル化のために標準的なPython型ヒントを活用しています。

  3. 自動インタラクティブドキュメント: FastAPIはOpenAPIとJSON Schemaを使用してインタラクティブなAPIドキュメントを自動生成し、/docsを通じてアクセス可能です。(Swagger UI)および /redoc(ReDoc)インタラクティブなAPIドキュメントのアップグレードにより、このドキュメントは自動的に更新されます。 代替APIドキュメントのアップグレードにもこれが反映されます。

  4. エディターサポート: VS Codeのようなエディターでのコード補完と型チェックにおいて優れたサポートがあり、開発を迅速化し、エラーを減少させます。

  5. 標準準拠: これはに基づいています。(と完全互換性があります)APIのオープン標準: OpenAPIおよびJSON Schema。

インストール

FastAPIをインストールすることができます。Uvicorn (ASGIサーバー)pipを使って:

pip install fastapi
pip install "uvicorn[standard]"
pip install fastapi
pip install "uvicorn[standard]"
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'pip install fastapi pip install "uvicorn[standard]"
VB   C#

最初のFastAPIアプリケーションを作成する

以下は、FastAPIを使用してユーザーインターフェースを介してPythonデータを公開するための簡単な例です。

from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
    return {"Hello": "World"}
@app.get("/items/{item_id}") # with query parameters
def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
    return {"Hello": "World"}
@app.get("/items/{item_id}") # with query parameters
def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}
from fastapi import FastAPI app = FastAPI() app.get("/") def read_root(): Return
If True Then
	"Hello": "World"
End If
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'@app.@get("/items/{item_id}") # @with query parameters def read_item(item_id: int, q: str = None): Return
'{
''INSTANT VB TODO TASK: The following line uses invalid syntax:
''	"item_id": item_id, "q": q}
VB   C#

アプリケーションを実行するには、Uvicornを使用します。

uvicorn main:app --reload
uvicorn main:app --reload
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'uvicorn main:app --reload
VB   C#

このコマンドは開発サーバーを起動し、コードの変更に対して自動的にリロードします。 インタラクティブなAPIドキュメントは http://127.0.0.1:8000/docs でアクセスできます。

高度な機能

FastAPIは、高度な機能を幅広くサポートしており、複雑なアプリケーションに適しています。

  1. 依存性注入: FastAPIは、依存関係をきれいかつ効率的に管理できる強力な依存性注入システムを提供します。

  2. バックグラウンドタスク: 応答を返した後に実行するバックグラウンドタスクを定義できます。これは、メール送信やデータ処理などのタスクに便利です。

  3. WebSockets: FastAPIはWebSocketsをサポートしており、クライアントとサーバー間のリアルタイム通信を可能にします。

  4. セキュリティ: FastAPI には、OAuth2、JWT トークンなどを含むセキュリティを処理するためのツールが含まれています。

  5. データベース統合: FastAPIは、SQLAlchemyやTortoise-ORMのようなライブラリを使用して簡単にデータベースと統合できます。

例: CRUD API の構築

シンプルなCRUDを構築しましょう(作成、読み取り、更新、削除)アイテムを管理するためのAPI。

  1. データモデルを定義する:
from pydantic import BaseModel
class Item(BaseModel):
    name: str
    description: str = None
    price: float
    tax: float = None
from pydantic import BaseModel
class Item(BaseModel):
    name: str
    description: str = None
    price: float
    tax: float = None
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'from pydantic import BaseModel class Item(BaseModel): name: str description: str = None price: float tax: float = None
VB   C#
  1. FastAPIアプリケーションを作成する:
from fastapi import FastAPI, HTTPException
app = FastAPI()
items = {}
@app.post("/items/")
def create_item(item: Item):
    item_id = len(items) + 1
    items[item_id] = item
    return item
@app.get("/items/{item_id}") # optional str query parameter
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]
@app.put("/items/{item_id}") # with path parameters
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
@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
app = FastAPI()
items = {}
@app.post("/items/")
def create_item(item: Item):
    item_id = len(items) + 1
    items[item_id] = item
    return item
@app.get("/items/{item_id}") # optional str query parameter
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]
@app.put("/items/{item_id}") # with path parameters
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
@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"}
404, detail="Item not found"
status_code=404, detail
404, detail="Item not found"
status_code=404, detail
404, detail="Item not found"
status_code=404, detail
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: from fastapi import FastAPI, HTTPException app = FastAPI() items = {} @app.post("/items/") def create_item(item: Item): item_id = len(items) + 1 items[item_id] = item return item @app.get("/items/{item_id}") # optional str query parameter 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] @app.put("/items/{item_id}") # with path parameters 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 @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
item Return item app.get("/items/{item_id}") # [optional] str query parameter def read_item(item_id:= Integer): if item_id [not] in items: raise HTTPException(status_code) Return items(item_id) app.put("/items/{item_id}") # [with] path parameters def update_item(item_id: Integer, item: Item): if item_id [not] in items: raise HTTPException(status_code) items(item_id) = item Return item app.delete("/items/{item_id}") def delete_item(item_id: Integer): if item_id [not] in items: raise HTTPException(status_code) del items(item_id) Return
If True Then
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: from fastapi import FastAPI, HTTPException app = FastAPI() items = {} @app.post("/items/") def create_item(item: Item): item_id = len(items) + 1 items[item_id] = item return item @app.get("/items/{item_id}") # optional str query parameter def read_item(item_id: int): if item_id not in items: raise HTTPException(status_code) return items[item_id] @app.put("/items/{item_id}") # with path parameters def update_item(item_id: int, item: Item): if item_id not in items: raise HTTPException(status_code) items[item_id]
len(items) + 1 items(item_id) = item Return item app.get("/items/{item_id}") # [optional] str query parameter def read_item(item_id:= Integer): if item_id [not] in items: raise HTTPException(status_code) Return items(item_id) app.put("/items/{item_id}") # [with] path parameters def update_item(item_id: Integer, item: Item): if item_id [not] in items: raise HTTPException(status_code) items(item_id)
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: from fastapi import FastAPI, HTTPException app = FastAPI() items = {} @app.post("/items/") def create_item(item: Item): item_id = len(items) + 1 items[item_id]
{} app.post("/items/") def create_item(item:= Item): item_id = len(items) + 1 items(item_id)
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: from fastapi import FastAPI, HTTPException app = FastAPI() items = {} @app.post("/items/") def create_item(item: Item): item_id
FastAPI() items = {} app.post("/items/") def create_item(item:= Item): item_id
from fastapi import FastAPI, HTTPException app = FastAPI() items
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'	"message": "Item deleted"}
VB   C#

IronPDFの紹介

FastAPI Python(開発者向けの仕組み):図1

IronPDFは、HTML、CSS、画像、JavaScriptからPDFを作成、編集、署名するために設計された強力なPythonライブラリです。 商業利用レベルのパフォーマンスを、低メモリフットプリントで提供します。 主要な機能には次のものが含まれます:

HTMLをPDFに変換

HTMLファイル、HTML文字列、URLをPDFに変換。 例えば、Chrome PDFレンダラーを使用してウェブページをPDFとしてレンダリングします。

クロスプラットフォームサポート

.NET Core、.NET Standard、.NET Frameworkなど、さまざまな.NETプラットフォームに対応。 Windows、Linux、macOSに対応しています。

編集と署名

プロパティを設定し、パスワードとアクセス許可を使用してセキュリティを追加し、PDFに電子署名を適用します。

ページテンプレートと設定

ヘッダー、フッター、ページ番号、調整可能な余白でPDFをカスタマイズ。 レスポンシブレイアウトとカスタム用紙サイズをサポートします。

規格遵守

PDF/AやPDF/UAなどのPDF標準に準拠。 UTF-8文字エンコーディングをサポートし、画像、CSS、およびフォントなどのアセットを処理します。

IronPDFとFastAPIを使用してPDFドキュメントを生成する

pip install fastapi
pip install ironPDF
pip install fastapi
pip install ironPDF
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'pip install fastapi pip install ironPDF
VB   C#
from fastapi import FastAPI
from fastapi.responses import FileResponse
from ironpdf import * 
# Apply your license key
License.LicenseKey = "key"
app = FastAPI()
@app.get("/")
def read_root():
    return {"Hello": "IronPDF"}
@app.get("/items/{item_id}") # with query parameters
def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}
@app.get("/pdf")
async def get_pdf(greet1: str = None,greet2: str = None):
    renderer = ChromePdfRenderer()
# Create a PDF from a HTML string using Python
    content = "<h1>Document Generated using IronPDF with fastapi GET</h1>"
    content += "<p> Demonstrate PDF generation using User Inputs"+"</p>"
    content += "<p>"+f"Greetings from: {greet1}"+"</p>"
    content += "<p>"+f"And Greetings from: {greet2}"+"</p>"
    pdf = renderer.RenderHtmlAsPdf(content)
    # Export to a file or Stream
    pdf.SaveAs("fastapi.pdf") 
    # To view the file in the browser, use "inline" for the media_type
    headers = {
        "Content-Disposition": "inline; filename=sample.pdf"
    }  
    # Create a FileResponse object with the file path, media type and headers
    response = FileResponse("fastapi.pdf", media_type="application/pdf", headers=headers)
    # Return the FileResponse object
    return response
from fastapi import FastAPI
from fastapi.responses import FileResponse
from ironpdf import * 
# Apply your license key
License.LicenseKey = "key"
app = FastAPI()
@app.get("/")
def read_root():
    return {"Hello": "IronPDF"}
@app.get("/items/{item_id}") # with query parameters
def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}
@app.get("/pdf")
async def get_pdf(greet1: str = None,greet2: str = None):
    renderer = ChromePdfRenderer()
# Create a PDF from a HTML string using Python
    content = "<h1>Document Generated using IronPDF with fastapi GET</h1>"
    content += "<p> Demonstrate PDF generation using User Inputs"+"</p>"
    content += "<p>"+f"Greetings from: {greet1}"+"</p>"
    content += "<p>"+f"And Greetings from: {greet2}"+"</p>"
    pdf = renderer.RenderHtmlAsPdf(content)
    # Export to a file or Stream
    pdf.SaveAs("fastapi.pdf") 
    # To view the file in the browser, use "inline" for the media_type
    headers = {
        "Content-Disposition": "inline; filename=sample.pdf"
    }  
    # Create a FileResponse object with the file path, media type and headers
    response = FileResponse("fastapi.pdf", media_type="application/pdf", headers=headers)
    # Return the FileResponse object
    return response
#Apply your license key
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: from fastapi import FastAPI from fastapi.responses import FileResponse from ironpdf import * License.LicenseKey = "key" app = FastAPI() @app.get("/") def read_root(): return
"key" app = FastAPI() app.get("/") def read_root(): Return
If True Then
From fastapi import FastAPI From fastapi.responses import FileResponse From ironpdf import * License.LicenseKey = "key" app
	"Hello": "IronPDF"
End If
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'@app.@get("/items/{item_id}") # @with query parameters def read_item(item_id: int, q: str = None): Return
'{
'	"item_id": item_id, "q": q
'}
#Create a PDF from a HTML string using Python
	#Export to a file or Stream
	#To view the file in the browser, use "inline" for the media_type
	#Create a FileResponse object with the file path, media type and headers
	#Return the FileResponse object
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'@app.@get("/pdf") async def get_pdf(greet1: str = None,greet2: str = None): renderer = ChromePdfRenderer() content = "<h1>Document Generated using IronPDF with fastapi GET</h1>" content += "<p> Demonstrate PDF generation using User Inputs"+"</p>" content += "<p>"+f"Greetings from: {greet1}"+"</p>" content += "<p>"+f"And Greetings from: {greet2}"+"</p>" pdf = renderer.RenderHtmlAsPdf(content) pdf.SaveAs("fastapi.pdf") headers = { "Content-Disposition": "inline; filename=sample.pdf" } response = FileResponse("fastapi.pdf", media_type="application/pdf", headers=headers) Return response
VB   C#

コードの説明

このコードスニペットは、FastAPIとIronPDFの統合を示しており、ユーザーの入力に基づいて動的にPDFドキュメントを生成し、ダウンロード可能なレスポンスとして提供します。

  1. ライセンスキーの設定: IronPDFのライセンスキーを適用して、その機能を有効にします。

  2. FastAPIの初期化: FastAPIインスタンスを初期化します(`アプリ`)HTTPリクエストを処理する。3. 基本ルートハンドラ: `read_root()`:ルートURLにアクセスしたときに「Hello IronPDF」というJSONメッセージで応答します。(`/`). **`read_item():item_idパスパラメーターとオプションのq` クエリパラメーターを受け取ります。 これらの関数パラメータを伴ったJSON応答を返します。

  3. PDF生成ルート(`/pdf`): `get_pdf()`**:

    • この非同期関数は、オプションのクエリパラメーターを持つ/pdfエンドポイントへのGETリクエストを処理します。(greet1 および greet2).
    • HTML 文字列を構築する(\コンテンツ)次を含む: ドキュメントの出典と目的を示すヘッダー。 ユーザー入力を利用してPDFを生成する例を示す段落(greet1 および greet2). `ChromePdfRenderer` を使用()IronPDF を使用して HTML コンテンツを PDF にレンダリングします(\pdf = renderer.RenderHtmlAsPdf(内容)`).
    • 生成されたPDFを「fastapi.pdf」として保存します。(`pdf.SaveAs("fastapi.pdf")`).5. PDFの配信:
    • PDF がブラウザ内でインライン表示されるように応答ヘッダーを設定します。(`"Content-Disposition": "inline; filename=sample.pdf"`).
    • 生成されたPDFファイルを指す適切なメディアタイプを持つFileResponseオブジェクトを作成します。(「application/pdf」).
    • FileResponse オブジェクトを返し、/pdf エンドポイントにアクセスした際にPDFドキュメントのダウンロードが開始されます。

    このコードスニペットは、FastAPIと統合して、ユーザーの入力に基づいてPDFドキュメントを動的に生成および提供するためにIronPDFをどのようにシームレスに統合できるかを示しています。 HTMLコンテンツをPDFに変換する能力を示しており、HTTP経由でのオンデマンドのドキュメント生成や配信を必要とするアプリケーションに適しています。

出力

以下は、APIから生成されたSwagger出力を示しています。

FastAPI Python(開発者向けの使い方):図2

PDF

FastAPI Python(開発者向けの動作方法):図3

IronPDFライセンス

IronPDFはPythonのライセンスキーで動作します。 IronPDF for Pythonは無料試用ライセンスキーで購入前に機能を確認できるようにする。

IronPDFパッケージを使用する前に、スクリプトの先頭にライセンスキーを配置します。

from ironpdf import * 
# Apply your license key
License.LicenseKey = "key"
from ironpdf import * 
# Apply your license key
License.LicenseKey = "key"
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

結論

FastAPIは、PythonでAPIを構築するための強力で使いやすいフレームワークです。 FastAPIは高性能、自動ドキュメント、そして高度な機能を備えており、初心者と経験豊富な開発者の両方にとって優れた選択肢です。 シンプルなAPIや複雑なWebアプリケーションを構築している場合でも、FastAPIは成功するために必要なツールを提供します。

IronPDFは、HTMLコンテンツからPDFドキュメントを作成、操作、およびレンダリングするための堅牢なPythonライブラリです。 HTMLからPDFへの変換、インタラクティブフォームの作成、PDF操作などの機能を提供します。(結合, 分割)、テキスト抽出。 さまざまなPythonアプリケーションに簡単に統合し、動的なPDFを手軽に生成するのに最適です。

次へ >
Python向けIronPDFとPDFium Pythonの比較 ### Python向けIronPDF - **簡単なインストール:** `pip install IronPDF`を使用して数分でインストールできます。 - **豊富な機能:** PDFの作成、編集、変換、合併、分割、フォームの記入、画像変換など、多岐にわたる機能を提供します。 - **高品質のレンダリング:** 高解像度の画像やテキストを正確にレンダリングできるため、プロフェッショナルな品質のPDFを生成できます。 - **優れたサポート:** 迅速なサポートと豊富なドキュメントが提供されています。 ### PDFium Python - **オープンソース:** PDFiumはオープンソースプロジェクトで、利用は無料です。 - **基本機能:** PDFの表示や簡単な編集を行う基本的な機能を提供します。 - **カスタマイズ性:** 開発者が自分のニーズに合わせてソースコードを自由に変更できます。 - **サポート制限:** 主にコミュニティベースのサポートで、公式の技術サポートはありません。 ### 結論 IronPDFは商用プロジェクトやプロフェッショナルな用途に向けた多機能かつ高品質なPDFソリューションを提供します。一方、PDFiumはオープンソースというメリットがあり、小規模なプロジェクトや予算の制約がある場合に適しています。選択する際には、プロジェクトの要求や予算に合わせて決定することが重要です。

準備はできましたか? バージョン: 2024.11.1 新発売

無料 pip インストール ライセンスを表示 >