Pythonのインストールと設定はコチラを参照
FastAPIのプロジェクトを作成
Poetryでプロジェクトを作成
> mkdir test-fastapi
> cd test-fastapi
> poetry init
とりあえずデフォルトで作成
> poetry install
Creating virtualenv test-fastapi in C:\Users\tmacoto\Work\test-fastapi\.venv
Updating dependencies
Resolving dependencies... (0.1s)
Writing lock file
Installing the current project: test-fastapi (0.1.0)
Warning: The current project could not be installed: [Errno 2] No such file or directory: 'C:\\Users\\tmacoto\\Work\\test-fastapi\\README.md'
If you do not want to install the current project use --no-root.
If you want to use Poetry only for dependency management but not for packaging, you can disable package mode by setting package-mode = false in your pyproject.toml file.
In a future version of Poetry this warning will become an error!
FastAPI用のパッケージをインストールする
> poetry add fastapi
Using version ^0.112.1 for fastapi
Updating dependencies
Resolving dependencies... (0.9s)
Package operations: 9 installs, 0 updates, 0 removals
- Installing idna (3.7)
- Installing sniffio (1.3.1)
- Installing typing-extensions (4.12.2)
- Installing annotated-types (0.7.0)
- Installing anyio (4.4.0)
- Installing pydantic-core (2.20.1)
- Installing pydantic (2.8.2)
- Installing starlette (0.38.2)
- Installing fastapi (0.112.1)
Writing lock file
> poetry add uvicorn
Using version ^0.30.6 for uvicorn
Updating dependencies
Resolving dependencies... (0.3s)
Package operations: 4 installs, 0 updates, 0 removals
- Installing colorama (0.4.6)
- Installing click (8.1.7)
- Installing h11 (0.14.0)
- Installing uvicorn (0.30.6)
Writing lock file
FastAPIの動作確認
main.py を作成すし、下記のコードを入力する
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
uvicorn でサーバを起動する
> poetry shell
Spawning shell within C:\Users\tmacoto\Work\test-fastapi\.venv
PowerShell 7.4.4
> uvicorn main:app --reload
INFO: Will watch for changes in these directories: ['C:\\Users\\tmacoto\\Work\\test-fastapi']
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [22184] using StatReload
INFO: Started server process [11188]
INFO: Waiting for application startup.
INFO: Application startup complete.
ブラウザで http://127.0.0.1:8000 にアクセスしてみる。
{"Hello":"World"}
ブラウザで http://127.0.0.1:8000/items/1234?q=abcd にアクセスしてみる。
{"item_id":1234,"q":"abcd"}
ブラウザで http://127.0.0.1/docs にアクセスしてみる。
動作しました。
Apacheで表示する
VirtualHostの設定はコチラも参照
> cd scoop\persist\apache\conf
> vi httpd.conf
下記のLoadModuleの行のコメントアウトを外す
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
> cd extra
> vi httpd-vhosts.conf
下記を追記する
# test-fastapi
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName test-fastapi.local
ProxyRequests Off
ProxyPass / http://127.0.0.1:8000/
ProxyPassReverse / http://127.0.0.1:8000/
ErrorLog "logs/test-fastapi.local-error.log"
CustomLog "logs/test-fastapi.local-access.log" common
</VirtualHost>
hostsファイルを管理者権限で編集する
> sudo vi C:\Windows\System32\drivers\etc\hosts
下記を追加
127.0.0.1 test-laravel.local
Apacheを再起動する
ブラウザで http://test-fastapi.local にアクセスする
{"Hello":"World"}
動作しました。
コメント