Skip to main content

Invoke FastAPI endpoints without starting a server.

Project description

fapi-cli

FastAPIアプリケーションに対してサーバーを起動せずにHTTPリクエストを送信できるCLIツールです。fastapi.testclient.TestClientを活用して、ローカルファイルからFastAPIアプリケーションを読み込み、curlライクなインターフェースでエンドポイントを呼び出します。

特長

  • fapi-cli request コマンドで任意のFastAPIアプリケーションにリクエストを送信
  • -X/--method, -P/--path, -d/--data, -H/--header, -q/--query といったcurl互換のオプション
  • -F/--form でフォームデータとファイルアップロードに対応(multipart/form-data
  • JSONレスポンスを整形して標準出力に表示
  • --include-headers でレスポンスヘッダーも表示可能

インストール

PyPIからインストール

pip install fapi-cli

pipxでインストール(推奨)

pipx install fapi-cli

uvxで一時実行

uvx fapi-cli request main.py -P /

Note (uvx / TestPyPI): TestPyPI では依存解決の都合で未検証の依存バージョンを拾ってしまうことがあります(特にプレリリース配布時)。 その場合は、明示的に依存を固定して回避してください。例:

uvx fapi-cli request main.py -P / --with "fastapi<1.0"
uvx fapi-cli request main.py -P / -F "name=Alice" --with "fastapi<1.0" --with "python-multipart<1.0"

要件

  • Python 3.9以上
  • FastAPI 0.100.0以上
  • FastAPIアプリケーション(テスト対象)

使い方

# アプリケーションを定義したファイルからGETリクエスト
fapi-cli request src/main.py

# POSTメソッドでJSONボディを送信
fapi-cli request src/main.py -X POST -P /items -d '{"name": "Alice"}'

# ヘッダーとクエリパラメータを付与
fapi-cli request src/main.py -H "Authorization: Bearer token" -q "page=1"

# アプリケーションの変数名が app 以外の場合
fapi-cli request src/api.py --app-name fastapi_app

フォームデータとファイルアップロード

-F オプションでフォームデータやファイルを送信できます(curlの-Fオプションと同等)。

Note: フォーム機能を使用するには python-multipart が必要です。FastAPIアプリケーション側で Form()File() を使用している場合はすでにインストールされているはずです。そうでない場合は以下のコマンドでインストールしてください:

pip install 'fapi-cli[form]'
# フォームフィールドを送信
fapi-cli request src/main.py -X POST -P /form -F "name=Alice" -F "age=30"

# 同一キーを複数回指定(例: List[str] を受け取る Form)
fapi-cli request src/main.py -X POST -P /tags -F "tag=python" -F "tag=fastapi"

# ファイルをアップロード(@記法)
fapi-cli request src/main.py -X POST -P /upload -F "file=@./image.png"

# Content-Type を指定
fapi-cli request src/main.py -X POST -P /upload -F "document=@./file.pdf;type=application/pdf"

# ファイル名を変更
fapi-cli request src/main.py -X POST -P /upload -F "file=@./temp.txt;filename=report.txt"

# フォームフィールドとファイルを同時に送信
fapi-cli request src/main.py -X POST -P /profile -F "name=Alice" -F "avatar=@./photo.jpg"

# 同一キーで複数ファイルをアップロード(例: List[UploadFile] を受け取る File)
fapi-cli request src/main.py -X POST -P /upload-many -F "files=@./a.txt" -F "files=@./b.txt"

Note: -d(JSONボディ)と -F(フォームデータ)は同時に指定できません。

ライセンス

MIT License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fapi_cli-0.2.1.tar.gz (31.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fapi_cli-0.2.1-py3-none-any.whl (10.2 kB view details)

Uploaded Python 3

File details

Details for the file fapi_cli-0.2.1.tar.gz.

File metadata

  • Download URL: fapi_cli-0.2.1.tar.gz
  • Upload date:
  • Size: 31.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for fapi_cli-0.2.1.tar.gz
Algorithm Hash digest
SHA256 4c56ac6b4dab60b2b9cddd9ffde62d68b8eb60dd09f6cc659672ddb1d1d85559
MD5 a46d3920ca9a4be710d48f2cad2f2399
BLAKE2b-256 27bf87ce5febe8e7e71e7daa689996961a0e17e8f323a583356d964db7d7cbe1

See more details on using hashes here.

Provenance

The following attestation bundles were made for fapi_cli-0.2.1.tar.gz:

Publisher: release.yml on WATA-saito/fapi-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fapi_cli-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: fapi_cli-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 10.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for fapi_cli-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d2a4e11db87e6f1bef2237d996bc0e5b243542f5180b074b931281b8accfea0f
MD5 ca267d81e65b2ac3d1405bbfd8025572
BLAKE2b-256 353e312f5e516a65097f193238c01d34e6b09a7eb5c47245634f726335f1d4a4

See more details on using hashes here.

Provenance

The following attestation bundles were made for fapi_cli-0.2.1-py3-none-any.whl:

Publisher: release.yml on WATA-saito/fapi-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page