fastapiとstaticFile()でmethod not allowed

エラー staticFileマウントしたらなんかPOSTできなかった import os from fastapi import FastAPI from fastapi.staticfiles import StaticFiles from pydantic import BaseModel class Chat(BaseModel): text: str app = FastAPI() this_directory = os.path.dirname(__file__) app.mount("/", StaticFiles(directory=os.path.join(this_directory, "static"), html=True), name="static") @app.post("/chat/") async def create_item(chat: Chat): return chat 127.0.0.1:46940 - "POST /chat/ HTTP/1.1" 405 Method Not Allowed 解決 app.mount()をルーターより後におけば大丈夫になった import os from fastapi import FastAPI from fastapi.staticfiles import StaticFiles from pydantic import BaseModel class Chat(BaseModel): text: str app = FastAPI() # この部分をmountより前に @app....

October 18, 2022 · 1 min

jinja2.exceptions.TemplateNotFoundの解決

大丈夫なパターン htmlファイルのあるフォルダと関数Jinja2Templatesを呼び出すpythonファイルが同一階層の場合は出現しません。 testapp ├ app.py └ templates └ index.html from fastapi import FastAPI from fastapi.templating import Jinja2Templates from fastapi.responses import HTMLResponse from fastapi.requests import Request app = FastAPI() templates = Jinja2Templates(directory='templates') @app.get("/", response_class=HTMLResponse) def index(request:Request): return templates.TemplateResponse( "index.html", {"request": request) ) エラーが出るパターン htmlファイルのあるフォルダと関数Jinja2Templatesを呼び出すpythonファイルが同一階層に無い場合にエラーが出現します。 testapp ├ router │ └ route.py ├ templates │ └ index.html └ main.py from fastapi import FastAPI from .router import route app = FastAPI() app.include_router(route.router) from fastapi import APIRouter from fastapi....

April 15, 2022 · 1 min

fastapi+uvicornでInvalid HTTP request received

invalid HTTP request received 本番環境でfastapiを動かしている時に以下のエラーが出力されました。 INFO: Started server process [9806] INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit) WARNING: Invalid HTTP request received. Traceback (most recent call last): File "/home/ec2-user/.local/lib/python3.7/site-packages/uvicorn/protocols/http/h11_impl.py", line 170, in handle_events event = self.conn.next_event() File "/home/ec2-user/.local/lib/python3.7/site-packages/h11/_connection.py", line 443, in next_event exc._reraise_as_remote_protocol_error() File "/home/ec2-user/.local/lib/python3.7/site-packages/h11/_util.py", line 76, in _reraise_as_remote_protocol_error raise self File "/home/ec2-user/.local/lib/python3.7/site-packages/h11/_connection.py", line 425, in next_event event = self....

March 22, 2022 · 2 min