Skip to content

Conversation

@yellowjang
Copy link
Contributor

@yellowjang yellowjang commented Nov 17, 2024

📌 PR 템플릿

🏷️ PR 타입 (PR Type)

아래 해당 사항에 체크해 주세요.

  • 🐛 버그 수정 (Bugfix)
  • ✨ 기능 개발 (Feature)
  • 🎨 코드 스타일 변경 (Code style update) - 포매팅, 로컬 변수 등
  • ♻️ 리팩토링 (Refactoring) - 기능 변화 없음, API 변경 없음
  • 🛠️ 빌드 관련 변경 (Build related changes)
  • 📝 문서 내용 변경 (Documentation)
  • 🔄 기타 (Other) - 설명 작성

📝 요약 (Summary)

PR의 목적과 간단한 설명을 적어주세요.


  • 로그인 기능 구현 공유 및 빌드 에러 공유

🔍 상세 내용 (Describe your changes)

변경 사항을 구체적으로 작성해 주세요.

  • 주요 변경점 예시: "버튼 스타일 변경" 등

  • 로그인 기능 추가 (signIn query)
  • axios 설치
  • 로그인 컴포넌트 사용 전 로그인 테스트를 위해 임시로 ui 를 만들어두었습니다!

🔗 관련 이슈 또는 링크 (Issue Number or Link)

이슈 번호나 관련 링크가 있다면 추가해 주세요.


#56

✅ 체크리스트 (Checklist)

PR 작성 시 아래 사항들을 점검해 주세요.

  • 빌드가 성공적으로 되었나요?
  • 코드에 주석을 추가했나요?
  • 모든 테스트가 통과했나요?
  • 관련 문서가 업데이트되었나요?

📸 스크린샷 (선택 사항)

변경 사항이 UI와 관련이 있다면 스크린샷을 추가해 주세요.


1. process (?) 에러

스크린샷 2024-11-17 오후 10 54 14 해당 부분에 대한 에러 메시지.. 스크린샷 2024-11-17 오후 10 54 35 env 파일 내의 baseUrl을 가져와서 정의하는 과정에서 에러가 나는데, 설치를 여러번 다시 해도 계속 에러가 나네요 ..

2. tsconfig.json 파일에서의 에러

스크린샷 2024-11-17 오후 10 56 02

📝 기타 사항

PR과 관련된 기타 사항이 있다면 적어주세요.

  • 이번에 올린 pr에서는 에러 확인을 위한 console.log 와 주석이 많아서, 로그인 확인 후 User 정보를 가져올 수 있게 되면 모두 지우도록 하겠습니다!
    아직 user 정보를 get 하는 건 없지만, 로그인이 성공하면 해당 post 요청에 대한 response.result 로 들어가면 볼 수 있긴 합니다! 콘솔에 찍히도록 일단 해두었습니다

@yellowjang yellowjang linked an issue Nov 17, 2024 that may be closed by this pull request
3 tasks
@yellowjang yellowjang changed the title Feat/auth login [#56] 로그인 기능 구현 Nov 18, 2024
Comment on lines 17 to 30
// 로그인 요청 처리
export const signIn = async (data: SignInRequest): Promise<SignInReponse> => {
try {
const response = await apiClient.post('/v1/auth/sign-in', data, {
// withCredentials: true,
})
console.log('로그인 성공:', response.data)
return response.data
console.log(response.data.result)
} catch (error) {
console.error('로그인 실패:', (error as Error).message)
throw error // 에러를 호출자에게 전달
}
}
Copy link
Contributor

Choose a reason for hiding this comment

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

export const signIn = (data: SignInRequest) => {
  return apiClient.post('/v1/auth/sign-in', data);
};

위와 같이 리팩토링을 하는 게 좋을 것 같다고 생각이 들어요.

이유

  1. 리팩토링 전
  • response.data를 리턴 (이러면 response 객체의 다른 상태에 접근 불가)
  • try-catch를 통해 에러를 핸들링하고 throw error로 재전달
  1. 리팩토링 후
  • response 객체 전체를 리턴
  • 호출자가 response.data, response.status, response.headers 등 다양한 정보를 활용할 수 있음
  • try-catch가 제거되어 API 호출부에서 에러 처리를 위임

즉,

  1. response.data만 반환하면 API 응답의 세부 정보(예: HTTP 상태 코드, 헤더, 요청 설정)를 호출자가 활용할 수 없습니다.
  • 리팩토링 후에는 호출자가 response 객체 전체를 활용할 수 있어 확장성이 증가할 것 같네요 -> 더 많은 정보를 호출자에게 제공이 가능함
  1. 에러 핸들링 책임 위임
  • try-catch를 함수 내부에서 처리하지 않으면, 호출자가 에러 처리를 커스터마이징할 수 있습니다.
    예를 들어, 호출자가 try-catch를 통해 로깅, 재시도, 사용자 알림 등 다양한 방식으로 에러를 다룰 수 있을 것 같아요 -> 에러 처리도 호출자가 하는 게 나을 것 같아요.

만약 함수 내부에서 try-catch로 처리했을 때 에러가 나면 사용자는 감지를 못 할 수가 있습니다. (함수 내부에서 에러를 console.log로 출력하고 종료하면, 호출자는 더 이상 에러를 받을 수 없고, 사용자 경험이나 문제 해결 방식을 제어할 수 없습니다.)

@KingNono1030 @yellowjang 의견 부탁드립니다!

Copy link
Contributor Author

Choose a reason for hiding this comment

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

의견 감사합니다

@KingNono1030 KingNono1030 marked this pull request as draft November 18, 2024 15:17
@KingNono1030 KingNono1030 marked this pull request as ready for review November 20, 2024 12:23
@KingNono1030 KingNono1030 merged commit ada42ae into dev Nov 23, 2024
1 check passed
@KingNono1030 KingNono1030 deleted the feat/auth-login branch November 25, 2024 05:16
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.

[FEATURE] [Auth] 로그인 queries

4 participants