triple-frontend
triple-frontend copied to clipboard
`authGuardedFetchers`를 기존 fetcher와 통합
https://github.com/titicacadev/triple-frontend/blob/9382d73a562ecbeb57e7e1cf992586f54fba6e60/packages/fetcher/src/auth-guarded-methods.ts#L9
authGuardedFetchers
는 로그인 실패시 재시도 로직을 내장한 fetch 함수 모음입니다. 그래서 인증이 필요없는 API도 사용할 수 있는데, 이름에 "가드"라는 의미가 들어가 인증이 필요할 때만 쓸 수 있다는 인상을 줍니다. 따라서 원래의 역할을 더 잘 설명하는 이름으로 바꿔야 합니다.
다만, 로그인 여부를 체크하기 때문에 타입 정의에 무조건 "NEED_LOGIN"이 포함되는 건 개발자가 부담스럽게 느낄 수 있습니다. 인증이 필요 없더라도 "NEED_LOGIN"을 예외처리 해줘야하기 때문입니다. 그냥 fetcher를 쓰면 쉽게 넘어갈 수 있는데, 이걸 쓰면 일어나지도 않을 에러 때문에 코드를 3줄 더 써야하는 것이죠.
하지만 API가 인증을 검사하는지 않는지는 프론트엔드 소스코드의 범위를 넘어서는 일이고, 방어적으로 생각하면 무조건 예외가 있어야 합니다.
@titicacadev/frontend 둘 중 어떤 방식으로 가는 게 좋을까요?
- 인증이 필요한 API와 필요없는 API를 fetch하는 함수를 각각 사용하는 컨벤션
- 장점: 개발자가 코드를 쉽게 작성. 간결한 코드 작성 가능.
- 단점: 방어적이지 않은 코드. 백엔드 API가 변경되었을 때 프론트 코드가 바뀌어야 함.
- 인증이 필요하든 안 하든 같은 fetcher 함수를 사용하고, "NEED_LOGIN"을 예외 처리하는 컨벤션
- 장점: 방어적인 코드. 백엔드 API와 상관없이 하나의 fetcher 사용 가능
- 단점: 일일히 예외처리가 필요함. 일어나지도 않을 에러를 관리해야함.