백엔드 오피스아워#1

아직·2022년 10월 31일
0
post-thumbnail

토큰이 있어야 처리할 수 있는 route의 경우 Postman에서 테스트하는 방법이 있나요?

auth 옵션에서 type을 bearer token으로 맞추고 로그인 시 전달 받은 토큰을 직접 입력해서 할 수 있다. 비슷한 작업은 header의 authorization에서도 가능하다.

error메세지는 어떤 식으로 백엔드에서 프론트엔드로 전달해 주나요?

catch한 에러는 (미들웨어 폴더에 작성한) error handler로 넘어갈 것이다. 고민해볼 점은 응답으로 전달되는 status가 현재 400으로 고정돼있는데, 이를 각 상태에 맞는 메세지가 전달되도록 조정하는 것이다.

Django에서는 모델을 만들면 admin 페이지에 해당 모델 섹션이 뚝딱 만들어지던데, express에서는 프레임워크 차원에서 admin 페이지를 지원하지 않는 것으로 알고 있습니다. 그렇다면 어떤 라이브러리가 많이 쓰이는지(현재 adminBro와 adminJS 정도를 확인했습니다.), 추천해 주실 수 있는지 부탁드립니다.

라이브러리가 있지만, 현업에서는 튜닝이 어려워서 쓰지 않으므로 admin 페이지를 별도로 만드는 것을 추천한다.

그렇다면 관리자를 '큰 권한'을 갖는 사용자 정도로 이해하면 되나요?

권한에 있어서, 토큰 개념을 더 자세히 알 필요가 있다. 예를 들어, 하나의 유저 모델에서 토큰으로 전달되는 정보에 따라 관리자/사용자를 구분할 수 있다. 그렇게 된다면 넘겨주는 토큰에 따라서 보여주는 페이지를 조절할 수 있다. 이 때, 하나의 html에서 admin 페이지/사용자 페이지를 조건부로 보여주는 것도 기술적으로는 가능하지만, 결국 관리자 관련 정보가 프론트엔드까지 전달되는 것이므로 보안상 위험하다.

유저-상품-장바구니-관리자 이렇게 4가지의 굵직한 객체를 염두에 뒀는데, 이 경우

장바구니 : 상품 = 1 : many

유저 : 장바구니 = 1 : 1

유저 : 상품 = 1 : many ("찜" 기능을 추가한다면)

상품 : 태그들 = many : many (주요 객체는 아니지만)

등의 관계를 생각할 수 있을 것 같습니다. mongoose에서 위와 같은 '관계'를 기반으로 모델링을 할 때 populate 기능이 가장 효과적이라고 할 수 있을까요? 아니면 다른 기능이나 로직을 추천해주실 수 있으신가요?

로그인해야지만 담을 수 있는 기능의 장바구니라면 이야기가 다르지만, 로그인하지 않아도 이용할 수 있는 장바구니라면 굳이 db에 저장할 필요가 있을까? 위 관계들 중 유저 : 상품을 이야기해 보자면, populate말고 객체를 가져올 수 있는 다른 기능이 있는데 이를 찾아보고 제공하는 서비스에 어떤 기능이 더 적합한지 고민해 볼 필요가 있다.

추가

현재 하는 프로젝트는 엄밀히 말하면 SSR의 일부를 프론트엔드에서 맡는 것이다. CSR라면 backend와 frontend가 같은 repository 안에 있지 않을 것이다.

API 작성도 중요하지만, 그 전에 commit 컨벤션, git flow, ESlint/Prettier 등 협업을 위한 기본기가 더 중요하다. 간단하게 정리하자면

commit 컨벤션:
commit 메세지를 자세하게 적어줄 것. 메세지 구조 등 고려해야 할 것이 많다. https://overcome-the-limits.tistory.com/6?category=923736 참조

git플로우:
git은 간단하게 분산 버전 관리 시스템이다. master, develop, feature 등이 나뉘어 있는 것도 중요하지만, 이들이 commit 시점에 따라 관리하는 ‘버전’이 다르다는 점을 더 주목해 보자. https://overcome-the-limits.tistory.com/7?category=923736 참조

ESLint/Prettier
Lint를 컨벤션 검열 라이브러리라고 요약할 수 있다면 Prettier는 검열된 부분을 자동으로 변경해주는 기능까지 있다. https://overcome-the-limits.tistory.com/4?category=923736 참조

0개의 댓글