728x90
반응형
MSA 프로젝트에서 API 설계를 하다가 "내 프로필 조회 API URL을 어떻게 할까?" 고민하게 됐다.
처음엔 당연히 이렇게 해야 한다고 생각했다.
GET /api/v1/users/{userId}
근데 API 설계를 찾아보다가 /me 라는 방식이 있다는 걸 처음 알게 됐다.
/{userId} 방식의 문제점
처음엔 userId를 경로에 넣는 게 당연하다고 생각했는데, 생각해보니 문제가 있었다.
→ 클라이언트가 자신의 userId를 직접 알고 있어야 함
→ 다른 사람의 userId를 넣으면 타인 정보 접근 가능
→ 추가적인 권한 검증 로직이 필요해짐
/me 방식
GET /api/v1/users/me
"현재 인증된 나" 를 의미하는 관용적 표현이었다.
JWT 기반 MSA에서는 이런 흐름으로 동작한다:
클라이언트 → Authorization: Bearer {JWT} → Gateway
→ Gateway가 JWT 검증
→ X-User-Id 헤더에 userId 주입
→ 서비스에서 헤더로 userId 추출
→ 내 정보 조회
클라이언트가 userId를 몰라도 되고, 헤더에서 추출하니까 타인 정보 접근도 불가능하다.
이미 업계에서 관용적으로 쓰이는 패턴이었는데 몰랐던 것이었다.
배운 점
/me 와 /{userId} 를 용도에 맞게 구분해서 쓰는 게 좋다.
GET /api/v1/users/me → 내 정보 조회 (로그인한 본인)
GET /api/v1/users/{userId} → 특정 유저 조회 (관리자 or 서비스 간 내부 호출)
당연하다고 생각했던 것도 한 번 더 찾아보면 더 좋은 방법이 있다는 걸 배웠다.
반응형
'Study' 카테고리의 다른 글
| [내일배움캠프 TIL] Testcontainers와 Karate DSL로 구축하는 MSA 테스트 환경 (통합 테스트 vs E2E 테스트) (0) | 2026.06.19 |
|---|---|
| [내일배움캠프 TIL] Java String 연산의 함정과 StringBuilder를 통한 성능 개선 (프로그래머스 '숫자 짝꿍') (0) | 2026.06.16 |
| [내일배움캠프 TIL] Spring Cloud Config Server 설정 파일 관리 방식: Native vs Git 분리 (우리의 선택과 기술적 명분) (0) | 2026.06.11 |
| [내일배움캠프 TIL] 마이크로서비스(MSA) 간 통신 방법 총정리 (0) | 2026.06.10 |
| [내일배움캠프 TIL] 분산트랜잭션과 데이터 일관성 (0) | 2026.06.09 |