본문 바로가기
Backend/Python

[FastAPI] Project Levup - 메모 기능 만들기

by 천우산__ 2023. 11. 16.

https://chunws13.tistory.com/46

 

[FastAPI] Project Levup - 회원가입과 로그인 기능 만들기

개인적으로 사용할 용도이긴 하지만, 주변 사람들에게 소개하면서 사용을 권장하기 위해 간단한 회원 가입 기능을 만들어 두려고 한다. 회원 가입 기능을 만들기 전 몇 가지 패키지 설치가 필요

chunws13.tistory.com

회원가입, 로그인 기능이 완료되었으므로 이어서 메모 기능을 넣을 차례. 아직 DB 연결 하기 전 단계이므로 회원가입 테스트 했던 것과 같이

Fake DB를 사용하여 작동 여부 테스트를 해보자.

1. 코드

@app.get("/api/memo")
def get_memo():
    return memo_db

@app.post("/api/memo")
def create_memo(Memo: Memo):
    index = len(memo_db) + 1
    memo_db[index] = Memo.content
    return {index : memo_db[index]}

@app.put("/api/memo/{memo_id}")
def edit_memo(memo_id: int, Memo: Memo):
    if memo_id not in memo_db:
        return {"error" : "메모 정보가 없습니다."}
    
    memo_db[memo_id] = Memo.content
    return {memo_id : memo_db[memo_id]}

@app.delete("/api/memo/{memo_id}")
def delete_memo(memo_id: int):
    if memo_id not in memo_db:
        return {"error" : "메모 정보가 없습니다."}
    
    memo_db[memo_id] = "삭제됨"
    return memo_db

Get 요청으로는 모든 메모를 반환해서 보여주고, Post 요청으로는 현재 Fake DB 길이를 확인한 후 + 1을 하여 인덱스로 사용, 새로운 메모를 추가한다. 

Put 요청으로는 메모 ID 와 내용을 받아 DB에서 해당 인덱스를 찾아 내용을 수정해주고

Delete 요청으로는 내용이 삭제되었다고 표기한다. Fake DB에서 인덱스 자체를 삭제하지 않는 이유는 Post 요청 시 인덱스 생성 기준이 

DB의 길이이기 때문에 실제로 데이터를 삭제한다면 DB 길이가 감소하여 이후 Post 요청으로 데이터를 생성하는 경우 인덱스가 중복될 우려가 있기 때문.

 

2. 테스트 결과

Post 요청 결과

 

Put 요청 결과

 

Delete 요청 결과

 

CRUD 가 정상적으로 작동하는 것을 확인했으므로, 다음으로 실제 DB 에 데이터를 넣을 수 있도록 서버와 DB를 연결하도록 하자.