質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Framework

Frameworkは、アプリケーションソフトを開発する際に、一般的な機能をより簡単に、より早く完了させる事を目的とした、ソフトウェアやライブラリのセットを指します。開発にフレームワークを使用する事で、追加で必要となる機能だけを開発するだけで済む為、開発効率の向上が見込めます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2585閲覧

【python】FastAPIのフォルダ構成など

uer03108

総合スコア194

Framework

Frameworkは、アプリケーションソフトを開発する際に、一般的な機能をより簡単に、より早く完了させる事を目的とした、ソフトウェアやライブラリのセットを指します。開発にフレームワークを使用する事で、追加で必要となる機能だけを開発するだけで済む為、開発効率の向上が見込めます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/07/01 13:21

こんにちは。

FastAPIを使ってみました。
公式サイトにあるように、下記コードを作成後、uvicorn main:app --reloadを実行して、動作確認いたしました。

python

1from fastapi import FastAPI 2 3app = FastAPI() 4 5 6@app.get("/") 7def read_root(): 8 return {"Hello": "World"} 9 10 11@app.get("/items/{item_id}") 12def read_item(item_id: int, q: str = None): 13 return {"item_id": item_id, "q": q}

基本的な質問で申し訳ないのですが、これはリクエスト用のurlは1つのファイルに複数書いていくということで宜しいでしょうか。
uvicornで指定するモジュールが1つだけの様なので。
(それとも、ファイルの中で自分でクラス分けしていくとか?)
その辺りの、簡単なファイル - フォルダ構成などを教えて頂けると有難いです。
あと、参考になりそうなコードなどあれば。。

PydanticSQLAlchemy(?)なども組み合わせて使用するのが、一般的と言うことで宜しいでしょうか。

質問が多くなりまして、申し訳ございません。
java servletだと、1つのファイルに1urlが一般的だった様な気がしたので。。

宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

基本的な質問で申し訳ないのですが、これはリクエスト用のurlは1つのファイルに複数書いていくということで宜しいでしょうか。

はい、とも言えるし、いいえ、とも言えます。

FastAPIは同じPythonで有名なDjangoや、JavaだとSpringフレームワークのようにガチガチに構成が決まっているわけではありません。
自分で好きな構成にできるため、宜しいでしょうか?と聞かれたら、答えは「よろしくもあるし、よろしくなくもある」ということになります。
が、Bigger Applications - Multiple Filesを見ると、「If you are building an application or a web API, it's rarely the case that you can put everything on a single file.」(機械翻訳:アプリケーションまたはWebAPIを構築している場合、すべてを1つのファイルに入れることができることはめったにありません。)と書いてありますので、ファイルを分ける方が一般的です。
個人的には1ファイルに全部書くとわかりにくいと思うので、分けた方が無難だと思います。

その辺りの、簡単なファイル - フォルダ構成などを教えて頂けると有難いです。

探しましたが無いですね。
FastAPIはFlaskやらをより便利にするよう進化したもので、だいたいFlaskと同じなので、Flaskのディレクトリ構造が使えると思います。

古いですが、以下のサイトが参考になると思います。
【Flask】ディレクトリ構成を考える

有名なところだと、templates, static, viewsは1つでその中に全部入れるのと、
application(機能:ログイン機能とかユーザ管理機能とか)をディレクトリ1個にまとめて配置する方法
の2個の配置方法があった気がします。
私は前者ばかり使います(Flaskは実装の都合でなんか面倒なので)が、Djangoは後者だったと思います。

あと、参考になりそうなコードなどあれば。。

FastAPIはなぜか殆どコード出てこないですね。
QiitaやStack Overflowあたりで検索するか、公式サイトを見るのが良いと思います。

PydanticやSQLAlchemy(?)なども組み合わせて使用するのが、一般的と言うことで宜しいでしょうか。

Pydanticはわからないですが、FastAPIでDBを使う場合はSQLAlchemyを使う方法が公式に載っているので、認識の通り一般的です。

java servletだと、1つのファイルに1urlが一般的だった様な気がしたので。。

上に書いた通り好きな様に事由に配置できますので、そういう実装も可能です。

投稿2022/07/01 14:46

FiroProchainezo

総合スコア2401

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

uer03108

2022/07/02 01:32

ご回答ありがとうございました。 とても参考になりました。 呼び出しのAPIの数が増えると、やっぱり1つのファイルだと管理が難しいということですね(*_*) 仰る通り、機能ごとにファイルを分けたりすると分かりやすいかなと思いました。 gitなどで参考になりそうなコードなどがないか調べてみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問