티스토리 뷰

반응형

FastAPI 시작하기

시작하기에 앞서, 가장 좋은 시작방법은 도큐먼트를 읽는 것 이다. https://fastapi.tiangolo.com/ko/

 

1 uvicorn run .. 명령어로 uvicorn을 시작할 수 있지만, 명령어를 main.py에 작성해두는 것이 좋다. 
2 개발모드에서는 reload True를 주면 코드 변경에 따라, 다시 빌드해주는 watch모드를 킬 수 있다. watch 모드를 키려면 해당 app attribute가 있는 파일을 문자열로 제공해줘야한다. (python 3.10, uvicorn 0.18.2 기준) 
3 '/' 경로에서 index.html을 별도 명시적 경로 없이 제공해주기 위해선, html 옵션을 켜줘야한다. 
4 cors 등의 헤더 전처리는 middleware 패턴을 활용한 starlette Middleware 객체를 활용해도 좋지만, fastapi서 제공하는 데코레이터를 활용하여 커스텀하게 바꾸어도 좋다고 생각한다.

프로젝트 디렉토리

 

import typing
import logging
import uvicorn
from os.path import abspath
import pathlib as path
from starlette.staticfiles import StaticFiles
from fastapi import FastAPI, Request, Response

app = FastAPI(title='my-API', version='0.0.1', docs_url=None, redoc_url=None)

@app.middleware('http')
async def add_cors(request: Request, call_next):
    response: Response = await call_next(request)
    response.headers['Access-Control-Allow-Origin'] = '*'
    return response

static_folder = abspath(path.Path(path.Path(__file__).parent.absolute() ,'..', 'static'))
app.mount("/", StaticFiles(directory="../static", html=True), name='static')

if __name__ == '__main__':
    uvicorn.run("main:app",host='0.0.0.0', port=8000, reload=True)

gist_github보러가기 https://gist.github.com/ingyeoking13/8b88e618a8b963a9d3448fff4bc1ae1f

 

starting fastapi

starting fastapi. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

간단하게 정리해보았다.

 

반응형