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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4c56ac6b4dab60b2b9cddd9ffde62d68b8eb60dd09f6cc659672ddb1d1d85559
|
|
| MD5 |
a46d3920ca9a4be710d48f2cad2f2399
|
|
| BLAKE2b-256 |
27bf87ce5febe8e7e71e7daa689996961a0e17e8f323a583356d964db7d7cbe1
|
Provenance
The following attestation bundles were made for fapi_cli-0.2.1.tar.gz:
Publisher:
release.yml on WATA-saito/fapi-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fapi_cli-0.2.1.tar.gz -
Subject digest:
4c56ac6b4dab60b2b9cddd9ffde62d68b8eb60dd09f6cc659672ddb1d1d85559 - Sigstore transparency entry: 779402963
- Sigstore integration time:
-
Permalink:
WATA-saito/fapi-cli@0133ebb9a4f1d1f377127ad9711c9953e2a4e05d -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/WATA-saito
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@0133ebb9a4f1d1f377127ad9711c9953e2a4e05d -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d2a4e11db87e6f1bef2237d996bc0e5b243542f5180b074b931281b8accfea0f
|
|
| MD5 |
ca267d81e65b2ac3d1405bbfd8025572
|
|
| BLAKE2b-256 |
353e312f5e516a65097f193238c01d34e6b09a7eb5c47245634f726335f1d4a4
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fapi_cli-0.2.1-py3-none-any.whl -
Subject digest:
d2a4e11db87e6f1bef2237d996bc0e5b243542f5180b074b931281b8accfea0f - Sigstore transparency entry: 779402968
- Sigstore integration time:
-
Permalink:
WATA-saito/fapi-cli@0133ebb9a4f1d1f377127ad9711c9953e2a4e05d -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/WATA-saito
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@0133ebb9a4f1d1f377127ad9711c9953e2a4e05d -
Trigger Event:
push
-
Statement type: