start fastapi
2020
Starlette 프레임 워크에서 개발 된 사용하기 쉬운 웹 앱인 Fastapi를 기반으로하는 버전 2021
pip3 install -r ./requirements.txt웹 응용 프로그램은 양파 스타일을 기반으로합니다
디렉토리 구조는 다음과 같습니다.
__init__.py 포함__init__.py 포함하여 핵심 모듈의 입력으로 다른 프로젝트에서 재사용 할 수있게합니다. ./main.py 실행하려면 예제를 시작합니다. 여기에는 다음이 포함됩니다.
내부 단계는 다음과 같습니다.
./main.py cmd args에 ./cfg/{env} 내부에 구성을로드 한 다음 uvicorn.run 호출하여 ./app/__init__.py 에서 fastapi 앱을 시작합니다../app/__init__.py , Core 모듈 및 사용자 처리기/모델/서비스는 Fastapi App의 startup 이벤트에서로드됩니다. 다양한 출시 옵션에 대해서는 ./misc/build 내부에 출시 스크립트를 넣을 수 있습니다.
논리를 구축하려면 일반적인 단계가 다음과 같습니다.
./main.py Dev 환경에서 기본적으로 서버를 실행합니다../app/handler 에 처리기를 추가하고 해당 import & APP.include_router 코드 추가 ./app/__init__.py./app/model 에 데이터 모델 추가, ./app/service 에서 서비스 추가./app/middleware 에 중간 전위를 추가하십시오코딩을위한 몇 가지 팁 :
/docs 얻습니다async def 함수)을 사용하지 마십시오. def 기능은 다른 스레드에서 호출됩니다./core 코드는 공유 가능해야합니다 (다른 프로젝트의 경우) ./app 의 코드는 현재 프로젝트에 맞아야합니다../misc/dev/gen_code.py 사용하여 핸들러, 모델 및 서비스에 대한 템플릿 코드를 생성 할 수 있습니다. Working Directory와 함께 프로젝트 루트 디렉토리로 실행하십시오pydantic.BaseModel 을 기반으로 한 코드 모델은 강력합니다처리 된 요청의 대부분은 200의 상태 코드를 포함해야합니다.
간단한 솔루션은 ./core/model/handler.py 에서 Resp Model을 사용하여 핸들러의 응답 본문을 생성하는 것입니다.
{
"success": bool,
"message": str,
"code": IntEnum,
"data": Any,
}
Resp.ok 사용하여 성공 응답을 생성하고 Resp.err 사용하여 오류 응답을 생성하십시오.
테스트 핸들러 ./app/handler/test.py 에는 ws 핸들러 예제가 포함되어 있습니다
자세한 내용은 WebSocket 문서를 참조하십시오
./misc/build/pack.sh 실행하여 프로젝트를 ./misc/build/start-fastapi.tar.gz 로 포장하십시오
Docker 배포의 예는 ./misc/build/Dockerfile 참조하십시오