티스토리 뷰
[관리자 페이지] 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 |
- Total
- Today
- Yesterday
- Prisma
- github
- Docker
- 개발블로그
- Webpack
- Ktor
- nodejs
- SEO최적화
- CI/CD
- AI챗봇
- llm
- kotlin
- Python
- 딥러닝
- NestJS
- REACT
- Next.js
- fastapi
- 프론트엔드면접
- gatsbyjs
- 웹개발
- 백엔드개발
- nextJS
- 프론트엔드
- rag
- App Router
- PostgreSQL
- SEO 최적화
- seo 최적화 10개
- 파이썬 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |