본문 바로가기
코딩/FastAPI

FastAPI 배우기 - 도입부 & 첫걸음

by 형큐 2023. 6. 23.
SMALL

공식문서를 번역한 내용입니다.

https://fastapi.tiangolo.com/ko/tutorial/path-params/

 

경로 매개변수 - FastAPI

경로 매개변수 파이썬 포맷 문자열이 사용하는 동일한 문법으로 "매개변수" 또는 "변수"를 경로에 선언할 수 있습니다: from fastapi import FastAPI app = FastAPI() @app.get("/items/{item_id}") async def read_item(item_

fastapi.tiangolo.com


FastAPI 설치

pip install fastapi

서버 역할을 하는 uvicorn 설치

pip install “uvicorn[standard]”

Main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}

라이브 서버 실행

uvicorn main:app --reload #만약 app의 이름이 틀리면 에러가 발생(Error loading ASGI app ~~)
INFO:     Uvicorn running on <http://127.0.0.1:8000> (Press CTRL+C to quit)
INFO:     Started reloader process [156] using WatchFiles
INFO:     Started server process [25308]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on <http://127.0.0.1:8000> (Press CTRL+C to quit)
#로컬에서 앱이 서비스되는 URL을 보여줌

대화형 API문서

http://127.0.0.1:8000/docs 자동형 대화형 API문서를 볼 수 있다.

http://127.0.0.1:8000/redoc 다른 버전의 api

OpenAPI

API를 정의하기 위한 OpenAPI 표준을 사용하여 API를 이용해 “스키마”를 생성한다.

“스키마” : 무언가의 정의 또는 설명. 이를 구현하는 코드가 아니라 추상적일 설명

API”스키마” : 이 경우, OpenAPI는 API의 스키마를 어떻게 정의하는지 지시하는 규격이다. 이 스키마 정의는 API 경로, 가능한 매개변수 등을 포함한다.

데이터”스키마” : ”스키마”라는 용어는 JSON처럼 어떤 데이터의 형태를 나타낼 수도 있다. 이러한 경우 JSON 속성, 가지고 있는 데이터 타입 등을 뜻한다.

OpeaAPI와 JSON 스키마

OpenAPI는 API에 대한 API스키마를 정의한다. 또한 이 스키마에는 JSON 데이터 스키마의 표준인 JSON 스키마를 사용하여 API에서 보내고 받은 데이터의 정의(또는 “스키마”)를 포함한다.

openapi.json 확인

<http://127.0.0.1:8000/openapi.json>
{
    "openapi": "3.0.2",
    "info": {
        "title": "FastAPI",
        "version": "0.1.0"
    },
    "paths": {
        "/items/": {
            "get": {
                "responses": {
                    "200": {
                        "description": "Successful Response",
                        "content": {
                            "application/json": {
...

단계별 요약

1 단계 : FastAPI 임포트

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}

2 단계 : “인스턴스” 생성

from fastapi import FastAPI

app = FastAPI() 

@app.get("/")
async def root():
    return {"message": "Hello World"}
이렇게 앱을 만든다면 
from fastapi import FastAPI

my_awesome_api = FastAPI()

@my_awesome_api.get("/")
async def root():
    return {"message": "Hello World"}

uvicorn을 이렇게 호출 해야함 uvicorn main:my_awesome_api --reload

3 단계 : 경로 동작 생성

“경로”는 첫 번째 /에서 시작하는 URL의 마지막 부분

예시)

<https://example.com/items/foo>
경로 : /items/foo

동작 : “동작(Operation)”은 HTTP”메소드” 중 하나를 나타낸다

일반적으로 아래 4가지를 말한다.

  • POST : 데이터를 생성하기 위해서.
  • GET : 데이터를 읽기 위해서.
  • PUT : 데이터를 업데이트 하기 위해서.
  • DELETE : 데이터를 삭제하기 위해서.
  • 그외 : OPTIONS / HEAD / PATCH / TRACE

OpenAPI에서는 각 HTTP메소드들을 “동작”이라 부른다.

경로 동작 데코레이터 정의

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
# / : 경로
# get : 동작 사용
async def root():
    return {"message": "Hello World"}

@app.get("/")은 FastAPI에게 바로 아래에 있는 함수가 다음으로 이동하는 요청을 처리한다는 것을 알려줌

get 외에는 @app.~~()로 사용한다.

4 단계 : 경로 동작 함수 정의

  • 경로 : /
  • 동작 : get
  • 함수 : 데코레이터 아래에 있는 함수 (@app.get(”/”) 아래)
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}

5 단계 : 콘텐츠 반환

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}

dict, list, 단일값을 가진 str, int 등을 반환할 수 있다.

반응형
LIST

'코딩 > FastAPI' 카테고리의 다른 글

FastAPI 배우기 - Query Parameters and String Validations  (0) 2023.06.27
FastAPI 배우기 - Request body  (0) 2023.06.26
FastAPI 배우기 - Query Parameters  (0) 2023.06.23
FastAPI 배우기 - Path Parameters  (0) 2023.06.23
FastAPI  (0) 2023.06.23