728x90
JWT를 생성한 후 Postman을 통해 DELETE API를 요청해서 todos 테이블의 데이터를 삭제해보자
1. auth 서버 실행 후 POST API를 통해 사용자 bearer token을 생성한다.
#포트를 8000번이 아닌 9000번에 열겠다.
uvicorn auth:app --reload --port 9000
9000포트로 실행 시킨 이유
#auth.py로 토큰 생성 port:9000
#main.py로 데이터 요청 port:8000
2. main.py에서 DELETE요청을 위해 auth의 함수를 import 한다.
from auth import get_current_user, get_user_exception
@app.delete("/{todo_id}")
async def delete_todo(todo_id: int, user: dict = Depends(get_current_user), db: Session = Depends(get_db)):
if user is None:
raise get_user_exception()
todo_model = db.query(models.Todos)\
.filter(models.Todos.id == todo_id)\
.filter(models.Todos.owner_id == user.get("id")).first()
if todo_model is None:
raise http_exception()
db.query(models.Todos).filter(models.Todos.id == todo_id).delete()
# db.flush()
db.commit()
return successful_response(200)
※ todos테이블의 id와 bearer token에 맞는 user의 정보를 받아서 todos 테이블의 데이터를 삭제한다.
3. todos 테이블 확인
4. Postman 접속 후 DELETE 요청해 보기
새로운 터미널을 열어서 실행
uvicorn main:app --reload
user: codingwithseok / password: test1234! 의 사용자에 대한 todos 테이블의 데이터를 삭제한다.
※ 사용자에 대한 인증을 위해 bearer token을 반드시 넣어줘야 한다(token을 생성한 이유)
Body에 데이터를 넣어 요청을 보낸다. 이때 옵션은 raw / type은 JSON\
status 200 코드를 확인할 수 있다.
5. 삭제하기 전 vs 삭제 한 후 데이터 비교
다시 GET 요청을 했을 때 id 1의 데이터가 삭제 된 것을 볼 수 있다
6. owner_id가 2인 데이터를 지우려고 한다면?
현재 권한이 사용자 1에만 해당되어있음으로 사용자 2에 foreign key가 묶인 owner_id 2의 데이터는 지울 수 없다.
728x90
SMALL
'Develop > FastAPI' 카테고리의 다른 글
FastAPI PostgreSQL Create Database Table - 58 (0) | 2023.01.15 |
---|---|
FastAPI로 Postman CRUD (0) | 2023.01.11 |
FastAPI Postman을 통한 PUT요청(사용자 ID + 할 일 ID) - 56 (0) | 2023.01.11 |
FastAPI Postman을 통한 POST요청(사용자 ID) - 55 (1) | 2023.01.10 |
FastAPI Postman을 통한 GET요청(사용자 ID + 할 일 ID) - 54 (0) | 2023.01.10 |