[관리자 페이지] Admin Page - 회원가입 구현하기 #2 API Router
[관리자 페이지] Admin Page - 회원가입 구현하기 #1 User Table 생성
Fast API는 include_router 를 통해서 api router 를 등록하여 prefix, global DI 등을 사용할 수 있습니다.
pip install fastapi
fastapi를 설치해 주고
root 디렉토리의 main.py 의 코드를 아래와 같이 수정합니다.
# main.py
from fastapi import FastAPI
app = FastAPI()
CLI 또는 IDE Run 으로 실행하고 localhost:4883/docs 로 접속해보면
화면을 만날 수 있습니다.
1. API 목록
현재 필요한 api 목록은 최소 2개입니다.
api 디렉토리를 만들어 주고 api_main 이라는 파일을 만들어 router를 정의해 줍니다.
.
┣━api
┃ ┣━__init__.py
┃ ┣━api_main.py
┣━database
# api/api_main.py
from typing import Optional
from fastapi import APIRouter
api_main = APIRouter()
@api_main.post("/signin")
def signin(userId: Optional[str], userPw: Optional[str]):
return {"accessToken": "accessToken", "refreshToken": "refreshToken"}
@api_main.post("signup")
def signup(userId: Optional[str], userPw: Optional[str]):
return {"message": "success"}
main.py 에는 api_main을 import 시키고 router를 include 합니다.
# main.py
from fastapi import FastAPI
from api import api_main
app = FastAPI(title="hiioAdminServer")
app.include_router(api_main)
다시 localhost:4883/docs 에 접속합니다.
API 가 생긴걸 볼 수 있습니다.
3. Post Method Request Model
pydentic 패키지를 이용해 Request로 들어오는 파라미터를 정의해서 사용해 줍니다.
.
┣━api
┃ ┣━models
┃ ┃ ┣━__init__.py
┃ ┃ ┣━user.py
┃ ┃
┃ ┣━__init__.py
┃ ┣━api_main.py
┣━database
api 디렉토리 안에 user 파일을 만들고
pydentic 의 BaseModel을 상속받는 UserModel class를 만들어 줍니다. 속성은 database에 정의된 id, password로 동일하게 만들어 줍니다.
# api/models/user.py
from typing import Optional
from pydantic import BaseModel, Field
class UserModel(BaseModel):
id: Optional[str] = Field(None, description="user's id")
password: Optional[str] = Field(None, description="user's password")
class Config:
from_attritues = True
class Config:
from_attributes 를 사용하면 기존의 orm_mode=True를 대체해서 사용할 수 있습니다.
아까 작성했던 signin 과 signup 함수의 파라미터를 user:User로 변경해 줍니다.
# api/api_main.py
from typing import Optional
from fastapi import APIRouter
from api.models import User
api_main = APIRouter()
@api_main.post("/signin")
def signin(user:UserModel):
return {"accessToken": "accessToken", "refreshToken": "refreshToken"}
@api_main.post("signup")
def signup(user:UserModel):
return {"message": "success"}
변경 된 Request body로 나오는 것을 볼 수 있습니다.
'project > 관리자 페이지' 카테고리의 다른 글
[관리자 페이지] Admin Page - 회원가입 구현하기 #4 비밀번호 암호화 (0) | 2024.03.31 |
---|---|
[관리자 페이지] Admin Page - 회원가입 구현하기 #3 Insert User Data (0) | 2024.03.30 |
[관리자 페이지] Admin Page - 회원가입 구현하기 #1 User Table 생성 (0) | 2024.03.29 |
[관리자 페이지] Admin Page - 로그인 프로세스 생각해보기 #2 (0) | 2024.03.29 |
[관리자 페이지] Admin Page - 로그인 프로세스 생각해보기 #1 (0) | 2024.03.28 |