Home [FastAPI] API Router
Post
Cancel

[FastAPI] API Router

API Router

  • API Router는 더 큰 애플리케이션들에서 많이 사용되는 기능
  • API Endpoint를 정의
  • Python Subpackage
  • API Router는 Mini FastAPI로 여러 API를 연결하여 활용
  • 기존에 사용하던 @app.get, @app.post가 아닌, Router 파일을 따로 설정하여 app에서 import하여 사용
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
from fastapi import FastAPI, APIRouter
import uvicorn

user_router = APIRouter(prefix="/users")    # '/users'를 Default router로 설정
order_router = APIRouter(prefix="/orders")  # '/orders'를 Default router로 설정

# 하단의 user 라우터는 다른 파일로 관리하는게 일반적
@user_router.get("/", tags=["users"])   # /users/
def read_users():
    return [{"username": "Rick"}, {"username": "Morty"}]

@user_router.get("/me", tags=["users"]) # /users/me
def read_user_me():
    return {"username": "fakecurrentuser"}

@user_router.get("/{username}", tags=["users"])     # /users/*
def read_user(username: str):
    return {"username": username}


# 하단의 order 라우터는 다른 파일로 관리하는게 일반적
@order_router.get("/", tags=["orders"]) # /orders/
def read_orders():
    return [{"order": "Taco"}, {"order": "Burritto"}]

@order_router.get("/me", tags=["orders"])   # /orders/me
def read_order_me():
    return {"my_order": "taco"}

@order_router.get("/{order_id}", tags=["orders"])   # /orders/*
def read_order_id(order_id: str):
    return {"order_id": order_id}

app = FastAPI()

if __name__ == "__main__":
    app.include_router(user_router)
    app.include_router(order_router)
    uvicorn.run(app, host="localhost", port=8000)

This post is licensed under CC BY 4.0 by the author.