[FastAPI Docs] Intro

JeongChaeJin·2022년 8월 23일
0

코드 실행

uvicorn main:app --reload

or

pip install "fastapi[all]"
  • uvicorn 포함 모든 선택적 의존성 및 기능 사용해서 설치
  • 운영환경에서 배포하는 경우에는 fastapi, uvicorn은 따로 pip install 해주는게 좋다.

Frist Step

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
async def root():
    return {"message": "Hello World"}
  • main.py
uvicorn main:app --reload
  • 실행

OpenAPI

  • FastAPI는 API 정의를 위한 OpenAPI 표준을 사용해 Schema를 생성한다.
  • Schema란 무언가의 정의 또는 설명, 추상적 설명이다.
  • API Schema란 API의 Schema를 어떻게 정의하는지 지시하는 규격이다.
    • API 경로, 가능 매개변수 등
  • Data Schema
    • Schema란 Json 형태 처럼 나타낼 수 있다. 가지고 있는 데이터 타입 등을 뜻한다.

OpenAPI & JSON SCHEMA

  • OpenAPI는 API에 대한 API 스키마를 정의하고, 이 스키마에 JSON 데이터 스키마 표준인 JSON Schema를 사용해서 API에서 보내고 받은 데이터 정의를 포함한다.
  • FastAPI는 자동으로 API 설명 및 JSON Schema를 생성한다.

OpenAPI 용도

  • 대화형 문서 시스템 제공

Summary

1.

from fastapi import FastAPI
  • FastAPI는 Starlette 직접 상속하는 Class

2.

app = FastAPI()
  • FastAPI 클래스의 Instance
  • 모든 API 생성 상호작용의 핵심
  • uvicorn이 참조하는 부분

3.

https://example.com/items/foo
  • path는 /items/foo이다.
    • endpoint, route라고도 불린다.
  • Operation (HTTP Method)
    • POST : 데이터 생성
    • GET : 데이터 읽기
    • PUT : 데이터 업데이트
    • DELETE : 데이터 삭제
    • 이외에도 많것들 있었음 (OPTIONS, HEAD, PATCH, TRACE 등)
    • HTTP 프로토콜에서는 이런 메소드를 하나 이상 사용해서 경로와 통신 가능

4. 경로 동작 데코레이터 정의

@app.get("/")
  • path : /
  • get 동작 사용을 의미
  • 데코레이터는 FastAPI에게 아래 함수가 경로에 해당하는 get 동작하라고 알려준다.
  • @app.post()
  • @app.put()
  • @app.delete()
  • @app.options() etc ...

5. 경로 동작 함수 정의

@app.get("/")
async def root():
	return {"message": "Hello World"}
  • get 동작을 사용해 URL "/" 요청받을 때마다 위 함수가 호출된다.
@app.get("/")
def root():
	return {"message": "Hello World"}
  • 일반 함수 정의
  • dict, list, str, int 등을 반환
profile
OnePunchLotto

0개의 댓글