💚 어떤 기능인가요?
#80 에서 의도적으로 미룬 API 계약 정리 두 건이다. 동작에는 문제가 없고 계약이 지저분한 상태다.
1. 가입 요청 전용 DTO 분리
POST /auth/register 가 응답 DTO 인 UserDto 를 그대로 요청 본문으로 받는다.
role / provider / providerId / isActive / emailVerified / id / deletedAt 등
클라이언트가 정해서는 안 되는 필드가 전부 노출된다.
값이 무시된다는 사실은 UserService.createUser 가 보장하지만(#82),
Swagger 문서에는 여전히 설정 가능한 것처럼 보인다. 읽는 사람이 오해하기 쉽고,
"무시되니까 괜찮다"는 전제가 언젠가 깨진다.
2. /users 구 경로 제거
#83 에서 호환을 위해 남겨둔 경로들이다. 본인 확인은 들어가 있으나 형태가 오해를 부른다
(경로에 남의 ID 를 넣을 수 있는 것처럼 보인다).
| 구 경로 | 대체 |
|---|
PUT /users/{userId}/location | PUT /users/me/location |
PUT /users/{userId}/profile-image | PUT /users/me/profile-image |
PUT /users/{userId}/deactivate | PUT /users/me/deactivate |
DELETE /users/{userId} | DELETE /users/me |
프런트에서 실제로 쓰는 것은 /users/{userId}/location 하나다.
✅ To Dos
💚 어떤 기능인가요?
#80 에서 의도적으로 미룬 API 계약 정리 두 건이다. 동작에는 문제가 없고 계약이 지저분한 상태다.
1. 가입 요청 전용 DTO 분리
POST /auth/register가 응답 DTO 인UserDto를 그대로 요청 본문으로 받는다.role/provider/providerId/isActive/emailVerified/id/deletedAt등클라이언트가 정해서는 안 되는 필드가 전부 노출된다.
값이 무시된다는 사실은
UserService.createUser가 보장하지만(#82),Swagger 문서에는 여전히 설정 가능한 것처럼 보인다. 읽는 사람이 오해하기 쉽고,
"무시되니까 괜찮다"는 전제가 언젠가 깨진다.
SignUpRequest를 만들어 등록 가능한 필드만 노출2.
/users구 경로 제거#83 에서 호환을 위해 남겨둔 경로들이다. 본인 확인은 들어가 있으나 형태가 오해를 부른다
(경로에 남의 ID 를 넣을 수 있는 것처럼 보인다).
PUT /users/{userId}/locationPUT /users/me/locationPUT /users/{userId}/profile-imagePUT /users/me/profile-imagePUT /users/{userId}/deactivatePUT /users/me/deactivateDELETE /users/{userId}DELETE /users/me프런트에서 실제로 쓰는 것은
/users/{userId}/location하나다./users/me/*로 전환✅ To Dos
/users/me/*전환/users/{userId}/*구 경로 제거