Skip to content

Conversation

@YehyeokBang
Copy link
Member

@YehyeokBang YehyeokBang commented Feb 6, 2025

요약

API 응답 형태를 표준화합니다. 관련 이슈: #35

공통 응답 형식

성공한 경우와 예외가 발생한 경우를 구분하여 응답합니다.

  • 클라이언트의 편의성을 위해 HTTP 상태 코드를 본문에 포함시켜 반환합니다. 이를 통해, 클라이언트는 별도의 상태 코드 확인 없이 응답 본문만으로 결과를 직관적으로 파악할 수 있습니다.
  • 추가로 본문에 응답 시간을 작성해도 될 것 같은데, 필요한 부분이 있을지 검토 중입니다.
{
    "status" : 200,
    "data" : "API 응답 결과"
}

{
    "status" : 403,
    "message" : "접근 권한이 없습니다."
}

모든 API에서 반환 값을 변경하지 않고, ResponseBodyAdvice를 활용하여 응답 본문만 수정하도록 구현하였습니다. 직접 핸들링하는 예외는 예외적으로 별도 처리가 가능합니다.

Spring Security 예외 응답

  • AccessDeniedHandler, AuthenticationEntryPoint를 구현하여 Spring Security의 인증 및 인가 관련 예외가 발생했을 때, 공통 응답 형식으로 반환되도록 처리했습니다.

인증 관련 API 인터페이스 변경

  • URI를 보다 직관적으로 변경했습니다. 두 개의 인증 관련 URI는 휴대폰이메일로 분기되도록 구성했습니다.
  • 민감한 정보를 URI로 노출하지 않도록 개선했습니다. 전화번호나 이메일 주소 같은 민감한 정보를 URI에 포함시키지 않고 요청 본문으로 받도록 변경하였습니다.

공통 응답 형식 적용 범위 지정

  • Swagger를 사용하고 있는데, 이 형식이 모든 패키지에 적용이 되어서 Swagger가 제대로 동작하지 않는 문제가 발생했습니다.
  • 그래서 dev.bang.pickcar 패키지인지 확인하는 부분을 추가했습니다.
image

위처럼 프로젝트의 API가 아닌 Swagger의 예시 API(PetStore)가 노출되었습니다. (수정 완료했습니다.)

- 핸들링하는 예외를 제외한 나머지 응답을 동일한 형식으로 반환하도록 합니다.
- URI를 더 명확히 수정합니다.
- 후대폰 번호와 같은 민감한 정보를 URI가 아닌 본문으로 받도록 수정합니다.
@YehyeokBang YehyeokBang added ✨ Feature 기능 개발 🔨 Refactor 코드 리팩토링 labels Feb 6, 2025
@github-actions
Copy link

github-actions bot commented Feb 6, 2025

Unit Test Results

  15 files    15 suites   1m 3s ⏱️
180 tests 180 ✔️ 0 💤 0
188 runs  188 ✔️ 0 💤 0

Results for commit d07a250.

♻️ This comment has been updated with latest results.

- Swagger 관련 패키지에도 적용되어 제대로 작동되지 않는 문제가 발생했습니다.
- 구현한 애플리케이션 패키지만 적용되도록 수정합니다.
@YehyeokBang YehyeokBang merged commit 47ffe11 into develop Feb 6, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✨ Feature 기능 개발 🔨 Refactor 코드 리팩토링

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants