WIL 6주차(TIL 42일차) - 주특기 node.js 심화주차 회고

박찬웅·2023년 3월 18일
0

항해99

목록 보기
47/105

23년 3월 19일

  • 이번 주간 회고록은 심화 주차 였던 3월 10일부터 3월 16일까지의 내용입니다.
  • 일요일에 소풍 가는 것 때문에 어제 미리 작성하였습니다.

이번 주 키워드

이번주 키워드는 CORS라는 내용이였다. chatGPT에서 질문하면 다음과 같이 정리를 할 수 있었다.

CORS는 Node.js 애플리케이션에서 브라우저의 동일 출처 정책을 우회하여 다른 도메인에서 온 요청을 허용하는 데 사용되는 라이브러리입니다.
기본적으로, 브라우저는 동일 출처 정책(Same-Origin Policy)을 따르기 때문에 다른 도메인에서 웹 리소스를 요청하면 보안상의 이유로 차단됩니다. 하지만 이것은 웹 어플리케이션에서 다른 도메인의 API를 사용해야 하는 경우가 많이 있기 때문에 CORS 미들웨어를 사용하여 이를 우회할 수 있습니다.

CORS는 Cross-Origin Resource Sharing의 약어로, 브라우저에서 서버로의 요청이 다른 도메인에서 온 것인지 확인하는 HTTP 헤더를 사용하여 이를 가능하게 합니다. 서버는 요청이 올바른 도메인에서 온 것인지 확인하고, 허용된 도메인만 리소스에 접근할 수 있도록 응답합니다.

cors 라이브러리는 Node.js에서 CORS를 구현하기 위한 유명한 미들웨어 중 하나입니다. 이 라이브러리는 HTTP 응답 헤더를 설정하여 요청이 허용되는 도메인을 지정하거나, 모든 도메인을 허용하도록 설정할 수 있습니다. 또한, cors는 브라우저가 서버로 요청을 보내기 전에 먼저 OPTIONS 요청을 보내서 서버의 응답을 확인하는 프리플라이트(preflight) 체크를 수행합니다. 이 프리플라이트 체크를 통해 서버는 클라이언트의 요청이 허용되는지 확인할 수 있습니다.

지금 프로젝트 초기라 아직 사용하지는 않았지만 본격적으로 API 배포하기 전에 저걸 사용해서 프론트앤드한테 배포 전달할때 사용할 예정이다.

배운 것

주특기 심화 주차때는 코드 가독성을 편하게 지정 할 수 있는 프리티어, 토큰의 시간을 정해주거나 다시 재 토큰을 부여해주는 accessToken, refreshToken, 객체지향과 그것에 대한 설계 5원칙인 SOLID와 계층 아키택쳐에 대해서 공부를 하였다. 그래서 대부분 개념적 이론 강의가 많았었고, 예시코드로 해당 용어를 의미하는데 배우게 되었다.

그리고 토요일에 저번 LV3 개인과제 마지막 부분이 잘 안된 부분이 해결이 되었고, 월요일부터 수요일까지 LV4 개인과제를 시작하였다. LV3에서 이어지는 부분이라서 거기에 댓글 API랑 좋아요 API를 구현하는 것이였다. LV4는 테이블 관계도 댓글 테이블이랑 좋아요 테이블까지 추가 되면서 테이블 관계 정의 하는 것도 점점 복잡하게 되었다. 그래도 숙련주차 퀴즈 볼때 나왔던 코드를 참고해서 테이블 관계 설정을 하게 되었다.
이후 댓글 API는 무난하게 했지만 좋아요 API는 상당히 애를 먹었던 부분이였다. 지금까지랑 다르게 좋아요는 res.body가 아니라 좋아요 누르면 올라가고 좋아요 다시 누르면 좋아요 취소하는 기능이였는데 결국 이 부분은 련주차 퀴즈 볼때 나왔던 코드를 참고해서 이때 include와 map 함수를 배우게 되었다. 구현 자체는 화요일에 마무리 했지만 코드 이해까지 하는데에는 수요일에 마무리 할 수 있었다. 그리고 마지막 목요일에는 3계층 아키텍처에 대해서 다시 공부를 하였다. 이 부분이 LV5 개인과제였는데 끝내 시간 부족으로 구현하지는 못하였다. 나중에 프로젝트를 할때 3계층 아키택쳐로 파일을 분리해서 구현한다면 한번 도전을 해볼 예정이다 (현재 지금 주특기 프로젝트 하고 있는데 3계증 아키택쳐 분리는 우선 보류를 하였다)
마지막으로 dotenv와 .env 파일을 만들어서 내가 사용하고 있는 데이터베이스랑 토큰키를 숨기게 하는 것도 다른 팀원들 통해서 알게 되었고 적용을 하게 되었다.

해결

그렇게 LV4 개인과제까지 마무리 하였다. 완성한 개인과제는 TIL 37일차를 보면 된다.

알게 된 점

이번주는 전반적으로 개인과제는 계속해서 Sequelize와 MYSQL을 사용해서 테이블 설계랑 API 구현을 집중적으로 구현하게 되었다. 확실히 다른 분들에 비해서 본인이 부족한 점이 많은 것 같다. 같은 주특기를 하시는 분들은 LV5까지 구현 한분들이 절반 정도 있었다. 물론 LV4까지 구현하신분들도 있었지만 그래도 노력은 계속 해야 된다는 것을 알게 되었다. 특히나 심화주차때 배웠던 개념들은 아직 완벽하게 이해하지 못하고 넘어가서 좀 많이 부족했던 한주였다고 생각한다. 그래도 여전히 배우는 단계고 나중에 프로젝트 하면서 이해 될꺼라고 믿는다.

앞으로 할 일

아마 내일쯤이면 백앤드 API는 팀원들 모두다 구현 마무리 될 것 같아서 프론트앤드 분들에게 배포를 할 예정이다. 확실히 백앤드가 프론트앤드에 비해서 구현할 것이 많기에 프론트앤드 분들에게 맞춰서 추가적인 API 수정이 필요하면 계속해서 수정하고 다시 배포하고 테스트 하는 반복을 가지게 될 것 같다.

profile
향해 13기 node.js 백앤드

0개의 댓글