개발로 자기계발
article thumbnail
728x90
JWT를 생성한 후 Postman을 통해 GET API를 요청해 보자

 

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에서 get요청을 위해 auth의 함수를 import 한다.

from auth import get_current_user, get_user_exception
@app.get("/todo/{todo_id}")
async def read_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 not None:
        return todo_model
    raise http_exception()

※ todos테이블의 id와 bearer token에 맞는 user의 정보를 받아서 todos 테이블을 조회한다.

 

 

3. todos 테이블 확인

 

 

4. Postman 접속 후 GET 요청해 보기

새로운 터미널을 열어서 실행
uvicorn main:app --reload

user: codingwithseok / password: test1234! 의 사용자에 대한 todos 테이블의 데이터 값이 보인다.

※ 사용자에 대한 인증을 위해 bearer token을 반드시 넣어줘야 한다(token을 생성한 이유)


id => 3의 값을 요청하면 어떻게 될까?

※ 사용자와 foreign key가 걸려있는 데이터가 없기에 데이터를 찾을 수가 없다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5. 에러 해결 GET 요청(테스트 유저)

user: exampleuser / password: test1234!

2번 사용자와 foreign key가 걸려있는 todos 테이블의 id 3인 데이터를 찾을 수가 있다.

728x90
SMALL
profile

개발로 자기계발

@김잠봉

틀린부분이나 조언이 있다면 언제든 환영입니다:-)