카테캠 2단계 과정 이수 중 실시간 강의를 수강하며 학습한 내용들을 정리한 내용입니다.
1. DTO 객체의 필요성
프론트가 편하게, 최대한 바로 사용할 수 있게 json을 제공하는 것이 좋은데, 때문에 DTO 객체가 탄생되게 되었다.
Response의 Body가 통일되지 않는다면 프톤트에서 공통된 처리를 하기가 힘들 수 있다.
또한, dto에는 해당 화면에 뿌려줄 값들을 바로 뿌릴 수 있도록 구성해야 한다.
2. JWT
로그인 시에 JWT를 사용할 수 있는데 보통 JWT는 요청 시 Authorization 헤더에 포함하여 통신하게 된다.
하지만 사실 JWT는 쉽게 Decode가 바로 가능하며, 때문에 JWT는 보안을 위한 것이 아닌, 신뢰성을 위한 것이라고 생각해도 좋다.
3. 백엔드 개발자 원칙
클라이언트의 데이터는 신뢰 불가능하다.
즉, 백엔드 개발자는 클라이언트로부터 받은 데이터를 의심하고 봐야한다. (= 신뢰하지 않는다.)
그렇다면 언제 신뢰가 가능할까?
클라이언트로부터 받은 데이터를 신뢰하려면 검증을 해야한다.
4. PK를 포함하자
프론트와 통신하기 위한 객체 즉, dto에는 해당 화면에 뿌려줄 값들을 바로 뿌릴 수 있도록 구성해야 하지만 id 값의 경우에는 화면에 나오지 않더라도 반드시 모든 dto에 포함하여야 한다.
그 이유는?
내가 생각하기에는 예시로 특정 게시물이나, 제품 등을 조회할 때
프론트 측에서 {id} 인 Query Parameter 등으로 요청을 보내기 때문에 포함하여야 한다고 생각한다. 그렇다면 프톤트 측에서 조회 등을 요청할 정보의 id 값을 알고 있어야 조회가 가능할 것 같은데 이 값들을 저장을 하는 것인지 아니면 다른 방법을 이용하는지... 궁금한데 이 부분에 대해서는 질의응답 후 수정하도록 하겠다!
'카카오테크캠퍼스 > 2단계' 카테고리의 다른 글
[카카오테크캠퍼스] 2단계 회고 (0) | 2023.08.11 |
---|---|
Stub을 이용해 컨트롤러 단위 테스트 하기 (Stub 주의점!) (0) | 2023.07.24 |
[카테캠] 2주차 정리 (0) | 2023.07.11 |
[1주차 과제] 추가 기능 도출 및 API요청 분석 (0) | 2023.07.01 |
[카테캠 2단계] 1일차 2단계 클론코딩 과정 보기 (0) | 2023.06.26 |