[FastAPI]CRUD API 만들기

코드왕·2023년 6월 4일
0
post-thumbnail
from fastapi import FastAPI,HTTPException
from pydantic import BaseModel,Field
from uuid import UUID

app=FastAPI() #Fast API를 앱으로 만든다.


class Book(BaseModel): # 유효성을 검사하는 BaseModel을 만든다.
    id:UUID #아이디는 UUID를 만든다.
    title:str=Field(min_length=1) #길이가 최소1 이상인 타이틀을 만든다.
    author:str=Field(min_length=1,max_length=100) #길이가 1~100인 저자를 만든다.
    description:str=Field(min_length=1,max_length=100) # 길이가 최소1에서 100인 설명을 만든다.
    rating:int=Field(gt=-1,lt=101) #레이팅을 0에서100까지 만든다.

BOOKS=[] #비어잇는 BOOKS 리스트를 만든다.

@app.get('/') # get요청으로 /를 만든다.
def read_api():
    return BOOKS #BOK 리스트를 출력해준다.

@app.post("/")
def create_book(book:Book): #book을 인풋으로 받는데, Book이라는 BaseModel을 기준으로 만든다.
    BOOKS.append(book) #인풋인 book을 BOOK리스트에 넣는다.
    return book #인풋을 출력 해준다
@app.put("/{book_id}") #PUT요청으로 parameter인 book_id를 받는다.
def update_book(book_id:UUID,book:Book): #book_id는 UUID를 따른다. book은 BOOK 모델을 따른다.
    counter = 0 
    for x in BOOKS:
        counter+=1
        if x.id==book_id:
            BOOKS[counter-1]=book
            return BOOKS[counter-1]
    raise  HTTPException(
        status_code=404,
        detail=f"ID {book_id} : Does not exist"
    )

@app.delete("/{book_id}") # 삭제하는 parameter를 받는다.
def delete_book(book_id:UUID): #book_id를 인풋으로 받고 UUID를 따른다.
    counter=0
    for x in BOOKS:
        counter+=1
        if x.id==book_id:
            del BOOKS[counter-1]
            return f"ID : {book_id} deleted"
    raise HTTPException(
        status_code=404,
        detail=f'ID {book_id}: Does not exist'
    )
profile
CODE DIVE!

0개의 댓글