Python PR

【Python】FastAPIでファイルをダウンロードするWeb APIをつくる

FastAPIでつくるファイルダウンローダー
記事内に商品プロモーションを含む場合があります

こんにちは。現役エンジニアの”はやぶさ”@Cpp_Learningです。

PythonのWebフレームワーク FastAPI を活用した簡単な Web APIの作り方をソースコード付きで紹介します。

今回つくるWeb API -ファイルダウンローダ-

今回つくるWeb APIはサーバー側にある任意のファイルをクライアント側に保存するファイルダウンローダです。

クライアントサーバーシステム

環境構築

既にPython開発環境がある場合は、以下のコマンドで各種インストールすればOKです。

pip install fastapi
pip install uvicorn[standard]

Dockerを使う場合は、FastAPI公式イメージを活用するのがオススメです。Dockerによるプログラミング開発環境構築については、以下の記事を参考にして下さい。

WSL2 + VSCode + DockerでPython開発環境をつくる
WSL2とDockerとVSCodeのRemote Containersで最高の開発環境をつくるこんにちは。現役エンジニアの”はやぶさ”@Cpp_Learningです。 WSL2 + Docker + VS Code の Re...
スポンサーリンク

実践 FastAPIでWeb API開発

プロジェクトフォルダの構成は以下の通りです。

filesフォルダの中身がダウンロードされるファイルです。

FastAPI製のファイルダウンローダ Web API

FastAPIのサンプルコードを参考に作った app.py のソースコードが以下です。

FastAPIを活用することで、非常に短いスッキリしたソースコードに仕上がりました。

最初は StreamingResponse を使っていましたが、FileResponse という非常に便利な機能があったので切り替えました。ファイル名を含むパスパラメータからメディアタイプを自動推定するのが最高でした。

自作Web API起動

以下のコマンドで app.py を実行すれば、自作のWeb APIサーバーが起動します。

python app.py

ブラウザなどから http://127.0.0.1:8000/get_file/{filename} というリクエストを投げると、ファイルをダウンロードできます。

あるいは http://127.0.0.1:8000/docs にアクセスすれば、”Try it out”ボタンで動作確認できます(詳しくは公式ドキュメントをご覧ください)。

FastAPIでつくるファイルダウンローダー

サーバー側の filesフォルダ に保存していないファイル名を指定してクエストを投げた場合は、以下のレスポンスが返ってきます。

FastAPIでつくるファイルダウンローダー

VSCodeの拡張機能:REST ClientによるWeb APIの動作確認

個人的にはVSCodeの拡張機能:REST Client を使って動作確認するのが好きなので、最後に今回つくった test.http と動作確認したときの様子を紹介します。

くるる
くるる
REST Client ってなに?美味しいの?

という人やフクロウは以下の記事を参考にしてください。

Webアプリ開発に役立つVSCodeの拡張機能
Webアプリ開発に役立つVSCodeの拡張機能3選Webアプリ開発に役立つVisual Studio Codeの拡張機能を紹介した記事です。...

test.http

今回つくったtest.httpは以下の通りです。

GET http://127.0.0.1:8000/get_file/iris.csv

iris.csvをダウンロードするためのGETリクエストを投げると、下図のレスポンスが返ってきます。

REST-ClientでWeb APIの動作確認ボディだけでなく、ヘッダーもサクッと確認できるのが最高ですね。右上の○で囲んだ部分に便利なボタンがあり、真ん中のボタンをクリックするとボディ(ダウンロードしたファイル)を保存できます。

私の環境では、デフォルトだと以下の場所に保存されます。

c:\Users\hayab\.rest-client\responses\body\iris.csv

GET http://127.0.0.1:8000/get_file/kururu.png

メディアタイプがtxtではなく、imageの場合は下図のようになります。

REST-ClientでWeb APIの動作確認ダウンロードした画像ファイルをサッとVSCode上で確認できるのが最高ですね。

くるる
くるる
FastAPIすごい!VSCode + REST Client最高!!くるる可愛い!!!
はやぶさ
はやぶさ
フクロウのくるるちゃんに完全に同意です

まとめ

PythonのWebフレームワーク FastAPI を活用した簡単な Web APIの作り方をソースコード付きで紹介します。具体的にはファイルダウンローダーの作り方を解説しました。

またVSCodeの拡張機能:REST ClientによるWeb APIの動作確認についても簡単に紹介しました。

くるる
くるる
Web API作るの楽しそう!独自のAPIを開発してみたい!

本記事を読んで、くるるちゃんのような感想を持ってくれたら、とても嬉しいです。

はやぶさ
はやぶさ
FastAPIとても便利なので、皆さん遊んでみてください

GoでWeb API(Webアプリ)作ってみたい人については、以下の記事が参考になれば嬉しいです。

goのWebフレームワークfiberでWebアプリをつくる
【Go言語(Golang)】FiberでファイルをダウンロードするWebアプリをつくるモダンなプログラミング言語のGo言語(Golang)とWebフレームワーク Fiber を活用したWebアプリ開発の入門チュートリアルです。題材として、サーバーに保存したファイルをダウンロードするWebアプリの作り方を解説しています。...
GoのWebフレームワークFiber
【Go言語(Golang)】WebフレームワークのFiberでファイルをアップロードするWebアプリをつくるGoのWebフレームワーク Fiber を活用した簡単なWebアプリ(ファイルアップローダ)の作り方をソースコード付きで紹介した記事です。...

PICK UP BOOKS

  • 数理モデル入門
    数理モデル
  • Jetoson Nano 超入門
    Jetoson Nano
  • 図解速習DEEP LEARNING
    DEEP LEARNING
  • Pythonによる因果分析
    Python