Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

✨ 내 프로필 조회 API 명세 #23

Merged
merged 3 commits into from
Oct 9, 2024
Merged

✨ 내 프로필 조회 API 명세 #23

merged 3 commits into from
Oct 9, 2024

Conversation

waterfogSW
Copy link
Member

@waterfogSW waterfogSW commented Oct 9, 2024

Summary by CodeRabbit

  • 새로운 기능

    • 사용자 프로필 정보를 조회할 수 있는 새로운 엔드포인트 /users/my 추가 (GET 요청).
    • 사용자 이름, 전화번호, 프로필 및 원하는 파트너 정보를 포함하는 응답 스키마 GetMyUserInfoResponse 정의.
  • 버그 수정

    • 인증 실패 및 접근 거부 시 표준화된 오류 메시지를 제공하는 Unauthorized 응답 추가.

Copy link

coderabbitai bot commented Oct 9, 2024

Caution

Review failed

The pull request is closed.

Walkthrough

이 변경 사항은 openapi.yaml 파일에 대한 여러 수정을 포함하며, 주로 사용자 관련 기능에 대한 API 사양을 향상시킵니다. 특히, 사용자가 자신의 프로필 정보를 검색할 수 있는 새로운 엔드포인트 /users/my가 추가되었습니다. 이 엔드포인트는 Bearer 토큰 인증을 요구하며, GET 요청을 지원합니다. 또한, 인증 실패 또는 접근 거부 시 표준화된 오류 메시지를 제공하는 새로운 응답 구성 요소가 도입되었습니다.

Changes

파일 경로 변경 요약
openapi.yaml - 새로운 엔드포인트 추가: GET /users/my (작업 ID: getMyUserInfo)
- 새로운 응답 추가: Unauthorized
- 새로운 스키마 추가: GetMyUserInfoResponse

Possibly related PRs

Suggested labels

fix

Suggested reviewers

  • dojinyou
  • moondev03
  • jisu15-kim

🐇 새로운 엔드포인트가 생겼어요,
사용자 프로필을 쉽게 볼 수 있죠.
오류 응답도 추가되어,
더 안전한 API로 나아가요!
모두 함께 즐겨요,
Rabbit의 기쁨이 넘쳐요! 🐰✨


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Outside diff range and nitpick comments (3)
openapi.yaml (3)

136-158: 새로운 엔드포인트가 잘 정의되었습니다.

/users/my 엔드포인트가 적절하게 구현되었습니다. Bearer 토큰 인증을 사용하고 있으며, 사용자 프로필 정보를 반환하는 응답 스키마가 잘 정의되어 있습니다. 오류 응답도 적절히 처리되고 있습니다.

일관성을 위해 다른 엔드포인트와 마찬가지로 parameters 섹션을 추가하는 것이 좋습니다. 예를 들어:

parameters:
  - $ref: '#/components/parameters/OSTypeHeader'

이렇게 하면 모든 엔드포인트에서 일관된 헤더 정보를 요구할 수 있습니다.


365-378: 인증 실패에 대한 응답이 잘 정의되었습니다.

Unauthorized 응답이 적절하게 구현되었습니다. ErrorResponse 스키마를 참조하고 있으며, 명확한 예시를 제공하고 있습니다.

응답의 설명을 더 명확하게 할 수 있습니다. 현재 "토큰 만료"로 되어 있는데, 이는 Forbidden 응답과 혼동될 수 있습니다. 다음과 같이 변경하는 것이 어떨까요?

description: 인증 실패 (유효하지 않은 토큰 또는 토큰 누락)

이렇게 하면 UnauthorizedForbidden 응답의 차이가 더 명확해질 것입니다.


550-569: 사용자 정보 응답 스키마가 잘 정의되었습니다.

GetMyUserInfoResponse 스키마가 적절하게 구현되었습니다. 사용자의 이름, 전화번호, 프로필, 원하는 파트너 정보를 포함하고 있으며, 모든 필드가 필수로 지정되어 있습니다. UserProfileUserDesiredPartner에 대한 참조를 사용하여 재사용성을 높인 점도 좋습니다.

향후 확장성을 고려하여, 사용자 ID 필드를 추가하는 것이 좋을 것 같습니다. 예를 들어:

properties:
  id:
    type: string
    format: uuid
    description: 사용자의 고유 식별자
  # ... 기존 필드들 ...
required:
  - id
  # ... 기존 required 필드들 ...

이렇게 하면 클라이언트 측에서 사용자를 더 쉽게 식별하고 관리할 수 있을 것입니다.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between 193eda2 and 7d29ff4.

📒 Files selected for processing (1)
  • openapi.yaml (3 hunks)
🧰 Additional context used

openapi.yaml Outdated Show resolved Hide resolved
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Outside diff range and nitpick comments (2)
openapi.yaml (2)

136-155: LGTM! 새로운 엔드포인트가 잘 정의되었습니다.

새로운 /users/my 엔드포인트가 RESTful 원칙을 잘 따르고 있으며, 보안 스키마도 적절히 적용되어 있습니다. 사용자 인증에 Bearer 토큰을 사용하는 것은 좋은 선택입니다.

한 가지 제안: 응답에 캐시 제어 헤더를 추가하는 것이 좋을 것 같습니다. 사용자 정보는 자주 변경될 수 있으므로, Cache-Control: no-store 헤더를 포함하여 클라이언트 측에서 이 정보를 캐시하지 않도록 하는 것이 좋습니다.

responses:
  '200':
    description: 조회 성공
    headers:
      Cache-Control:
        schema:
          type: string
        description: 캐시 제어 지시문
        example: no-store

540-559: 사용자 정보 응답 스키마가 잘 정의되었습니다.

GetMyUserInfoResponse 스키마가 RegisterUserRequest 스키마와 일관성을 유지하면서 필요한 모든 사용자 정보 필드를 포함하고 있어 좋습니다. 복잡한 객체에 대해 $ref를 사용한 것은 재사용성을 높이는 좋은 방법입니다.

한 가지 제안: 사용자의 고유 식별자(ID)를 추가하는 것이 좋을 것 같습니다. 이는 클라이언트 측에서 사용자를 고유하게 식별하는 데 유용할 수 있습니다.

GetMyUserInfoResponse:
  type: object
  properties:
    id:
      type: string
      format: uuid
      description: 사용자의 고유 식별자
    # ... 기존 필드들 ...
  required:
    - id
    # ... 기존 required 필드들 ...
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between 7d29ff4 and b16a4be.

📒 Files selected for processing (1)
  • openapi.yaml (3 hunks)
🧰 Additional context used
🔇 Additional comments (2)
openapi.yaml (2)

363-382: 인증 실패에 대한 응답이 명확하게 정의되었습니다.

새로운 Unauthorized 응답 컴포넌트가 잘 구조화되어 있으며, 인증 실패에 대한 명확한 오류 메시지를 제공합니다. 토큰 만료와 유효하지 않은 토큰에 대한 두 가지 예시를 포함한 것은 좋은 접근입니다.

오류 코드가 전체적인 오류 처리 전략과 일관성을 유지하고 있어 좋습니다. 또한 예시에서 사용된 시간 형식이 ISO 8601을 따르고 있어 적절합니다.


Line range hint 1-759: 전반적으로 API 명세가 잘 개선되었습니다.

이번 변경사항들은 사용자 프로필 관리 기능을 크게 향상시켰습니다. 새로운 /users/my 엔드포인트, Unauthorized 응답 컴포넌트, 그리고 GetMyUserInfoResponse 스키마가 잘 정의되어 있으며, 기존 API 설계와 일관성을 유지하고 있습니다.

제안된 개선사항들(캐시 제어 헤더 추가, 사용자 ID 필드 추가)을 고려해 보시기 바랍니다. 이러한 작은 변경사항들이 API의 전반적인 품질을 더욱 향상시킬 수 있을 것입니다.

@waterfogSW waterfogSW changed the title ✨ 내 프로필 조회 API 구현 ✨ 내 프로필 조회 API 명세 Oct 9, 2024
@waterfogSW waterfogSW merged commit 6676694 into main Oct 9, 2024
2 of 3 checks passed
@waterfogSW waterfogSW deleted the feat/my-info branch October 9, 2024 08:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants