갑자기 세워진 Fastapi.

6024 단어 PythonREST-APIFastAPI

환경 준비

$ pipenv shell
$ pipenv install fastapi uvicorn

소스 코드


요점:
  • GET
  • 경로 매개 변수
  • POST
  • 신체의 수신 방법
  • main.py
    from fastapi import FastAPI
    from pydantic import BaseModel
    import dataclasses
    import uuid
    
    class UserInput(BaseModel):
        name: str
    
    @dataclasses.dataclass
    class User:
        id: str
        name: str
    
    data = dict()
    
    app = FastAPI()
    
    @app.post("/users/")
    async def create_user(user_input: UserInput) -> User:
        user_id = str(uuid.uuid4())
        user = User(user_id,user_input.name)
        global data
        data[user_id] = user
        print(user_id)
        return user
    
    @app.get("/users/{user_id}")
    async def read_user(user_id: str) -> User:
        return data[user_id]
    
    @app.delete("/users/{user_id}")
    async def delete_user(user_id: str) -> None:
        del data[user_id]
    

    부팅 방법


    요점
  • 포트 번호 지정
  • 호스트 이름 지정
  • 호스트 이름을 지정하지 않으면 도메인 이름 등이 공개될 때 빠져든다.
    $ uvicorn main:app --port=8080 --host=0.0.0.0
    
    개발용 리로드.
    $ uvicorn main:app --reload --port=8080 --host=0.0.0.0
    

    동작 확인




    컨테이너화


    Dockerfile
    FROM python:3.6-slim
    
    COPY Pipfile .
    COPY Pipfile.lock .
    
    RUN pip install pipenv --no-cache-dir
    RUN pipenv sync --system  
    
    COPY main.py .
    CMD pipenv run uvicorn main:app --port=8080 --host=0.0.0.0
    
    $ docker build -t fastapi_test .
    $ docker run --rm -p 8080:8080 fastapi_test
    

    좋은 웹페이지 즐겨찾기