FastAPI 공식문서 공부 (1)

Dongwon Ahn·2020년 10월 2일
0

Header Parameters

api만들다 보면 path, query, body 말고도 추가적으로 header를 통해 프론트에게서 데이터를 전달받는 경우가 있습니다.
FastAPI에서의 사용법에 대해 알아보겠습니다.

  • 우선 Header를 import 합니다.
from fastapi import FastAPI, Header
  • 아래와 같이 api를 만듭니다.
@app.get("/headers/")
def headers(headers_test: Optional[str] = Header(None)):
    return {"headers_test": headers_test}
  • api 테스트 (Headers에 headers_test가 아닌 headers-test로 진행해야합니다.)

FastAPI에서는 header의 -를 자동으로 _로 변환하게 됩니다.
자동으로 변환하는 이유는 헤더에서 underscore를 기본적으로 인식하지 않기 때문입니다.
기본적으로는 헤더에 underscore를 쓰지 않는 것이 일반적이지만 정말쓰고 싶을 경우 아래와 같이 하면 됩니다.

  • underscore 허용
@app.get("/headers/")
def headers(headers_test: Optional[str] = Header(None, convert_underscores=False)):
    return {"headers_test": headers_test}
  • api 테스트

다만 header에 underscore를 쓰는것은 서버 환경에 따라 안될수도 있으니 쓰지 않는 것을 추천합니다.

Response Model

응답 데이터를 변환할 수 있습니다. 예를 들어 회원 가입 같은 경우 패스워드를 일반적으로 저장 및 사용자에게 전달하면 안되기 때문에 패스워드빼고 전달하는 등으로 사용가능할꺼 같습니다.

  • model을 2개 작성합니다.
class UserIn(BaseModel):
    username: str
    password: str
    email: str
    full_name: Optional[str] = None


class UserOut(BaseModel):
    username: str
    email: str
    full_name: Optional[str] = None
  • api를 생성합니다. response_model 설정을 통해 사용할 수 있습니다.
@app.post("/user/", response_model=UserOut)
async def create_user(user: UserIn):
    return user
  • api 확인

  • swagger 확인
    swagger에서도 response_model이 설정이 된 것을 확인할 수 있습니다.

profile
Typescript를 통해 풀스택 개발을 진행하고 있습니다.

0개의 댓글