므흐므흐
531
2021-04-11 22:04:07 작성 2021-04-11 22:54:54 수정됨
3
181

JWT 토큰을 활용한 API URL 규칙설계 질문


JWT 토큰안에는 아래와같이 정보가 있는 형태입니다.



위와같이 토큰 안에 user_id가 담겨져 있다보니, 서버쪽에 또한 (과거 방식과 같은) 토큰 데이터를 미저장 및 대조를 안하고 JWT 토큰 내 정보만으로 user_id를 얻어낼 수 있습니다.


여기서 질문이 있는데,

API URL 규칙 설계에 있어 URL 안의 ID값을 지워도 될지 모르겠습니다.


[예시]

1. 기존, 1번 유저 탐색

URI: /api/v1/users/1

(URI에 있는 ID Parameter을 기반으로 유저 특정)


2. JWT 토큰 도입 후, 1번 유저 탐색

URI: /api/v1/users

Headers['Authorization'] = 'eyJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxLCJleHAiOjE2MTgwMzc3MTQsImlhdCI6MTYxODAzNzcwOH0.SswuA-2nAo5kSYKK2B2Lfz2AGN3rSl1hyg9iqVA8yXM'

(서버에서 JWT 토큰 복호화 및 토큰안에 담긴 user_id 기반으로 유저 특정)


단, User ID외 다른 API에는 해당 resource에 대한 ID값을 던져줄까 합니다. 

(자유게시판 글 열람)

URI: /api/v1/categories/1/boards/32

Headers['Authorization'] = 'eyJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxLCJleHAiOjE2MTgwMzc3MTQsImlhdCI6MTYxODAzNzcwOH0.SswuA-2nAo5kSYKK2B2Lfz2AGN3rSl1hyg9iqVA8yXM'


사실 이 답을 찾아보고자 많은 Open API 문서를 찾아봤는데.. 썩 제가 원하는 답이 안나와서 이렇게 질문드립니다.. 😥

0
  • 답변 3

  • 천사와악마
    958
    2021-04-11 23:26:48

    모든 사용자 정보를 확인할 수 있는 관리자(관리기능)의 경우 처리가 조금 걸리네요.

  • 장독깨기
    1k
    2021-04-12 00:01:25

    좀 이상합니다. api uri  규칙을 의미에 맞게 사용하는게 좋아보입니다.

    /api/users => 사용자 목록을 요청하는 의미 같습니다.

    /api/users/1 => 1번 사용자의 프로필을 요청하는 의미 같습니다.

    /api/profile => 이 경우는 jwt 에 있는 사용자 정보로 프로필을 요청하는 의미 같습니다.

    (이때는 사용자 아이디를 uri 에 붙이면 안되겠죠..)

  • 므흐므흐
    531
    2021-04-12 01:09:47 작성 2021-04-12 01:12:02 수정됨

    사실.. 이 질문을 한 계기가 저 또한 위 장독깨기 님의 생각과 천사와악마 님의 생각과 대립이 되어가지고 이렇게 질문을 꺼내게 되었습니다..


    천사와악마 님의 의견의 대안책으론 'Admin API를 따로 판다' 로서 해결은 되지만..

    표준 Rest API 설계론 관점 (이게 확실한 표준은 아니나, 많은 사람들이 따르는 평균적인 표준인 관점으로 봤을 때입니다.) 으로 보면 장독깨기 님의 의견에도 일리가 있어가지고요..


    개인적인 편의성보단 평균적인 표준을 따르는게 맞을 것 같네요..

    다들 답변주셔서 감사합니다.

  • 로그인을 하시면 답변을 등록할 수 있습니다.