개요
이번 주는 주특기 (Node.js) 2주차로서 2인 1조로 페어를 맺어 Node.js 관련 과제를 수행하며 강의 또한 듣는 주간이었다.
배운 내용
배운 내용은 블로그의 TIL에 다 있으니 그냥 블렛포인트로 정리만 하고 가려고 한다.
- 8/28 월요일
- 3주차 개인과제 Lv1 Post and Comment MongoDB 및 Mongoose로 구현 및 배포
- 8/29 화요일
- Lv1 Peer Code review
- 주특기 2주차 강의 완강 및 Lv2 과제 시작
- 8/30 수
- RDB (관계형 데이터베이스)
- RDS 구매 및 MySQL 세팅
- SQL 살펴보기 및 제약조건
- ORM과 Prisma
- 9/1 목
- Lv1 과제 틀린거 수정 보완 - validation, error handling 수정
- Lv2 과제 작업 시작
- 9/2 금
- Lv2 과제 작업 완료 및 팀원
- 9/3 토
- Lv2 과제 팀<>팀(종훈, 승일) 피어리뷰 진행
- 9/4 일
- Cookie, session 구현
- jwt 구현
- 나만의 게시판 사이트 설계 프로젝트 시작
공부한 내용 정리
Restful API, package.json
RESTful API
기본 개념 이해:
- HTTP 메서드 (GET, POST, PUT, DELETE)의 역할과 사용법을 이해합니다.
- 리소스와 URI의 개념을 이해하고, 리소스를 어떻게 표현할지 결정합니다.
- 상태 코드 (HTTP status code)의 의미와 사용법을 파악합니다
RESTful API는 Representational State Transfer의 약자로, 웹 서비스에서 리소스를 표현하고 해당 리소스에 대한 CRUD(Create, Read, Update, Delete) 작업을 수행하기 위한 아키텍처 스타일입니다. REST는 클라이언트와 서버 간의 통신을 위한 규칙과 제약을 정의하여 상호작용을 가능하게 합니다.
RESTful API는 몇 가지 핵심 원칙을 따르며, 이를 통해 간단하고 일관된 인터페이스를 제공합니다.
- 리소스(자원): 모든 것을 리소스로 표현합니다. 예를 들어, To-Do 애플리케이션에서 할일은 하나의 리소스로 간주됩니다.
- HTTP 메서드: HTTP 동사(메서드)를 사용하여 리소스에 대한 동작을 나타냅니다.
- GET: 리소스 조회
- POST: 리소스 생성
- PUT: 리소스 전체 수정
- PATCH: 리소스 일부 수정
- DELETE: 리소스 삭제
- URI (Uniform Resource Identifier): 각 리소스를 고유한 식별자인 URI로 표현합니다. 예를 들어, /todos는 할일 목록을 나타냅니다.
- 표현(Representation): 클라이언트와 서버 간에 주고받는 데이터는 JSON 또는 XML과 같은 형식으로 표현됩니다.
- 상태 전이(Stateless): 서버는 클라이언트의 상태를 관리하지 않습니다. 각 요청은 독립적이며, 요청 간에 정보가 공유되지 않습니다.
- 캐시 가능(Cacheable): 서버 응답은 캐시될 수 있어야 합니다. 클라이언트는 캐시된 데이터를 재사용하여 성능을 향상시킬 수 있습니다.
- 계층화(Layered System): 클라이언트는 서버와 직접 통신하며, 중간에 레이어(로드 밸런서, 캐시 등)를 사용하여 확장성과 보안을 개선할 수 있습니다.
기본 예시
- 할일 생성 (POST /todos):
- 요청: { "value": "Buy groceries" }
- 응답: { "id": 1, "value": "Buy groceries", "done": false }
- 할일 목록 조회 (GET /todos):
- 응답: [{ "id": 1, "value": "Buy groceries", "done": false }, ...]
- 할일 상세 조회 (GET /todos/:id):
- 응답: { "id": 1, "value": "Buy groceries", "done": false }
- 할일 업데이트 (PATCH /todos/:id):
- 요청: { "value": "Buy vegetables" }
- 응답: { "id": 1, "value": "Buy vegetables", "done": false }
- 할일 완료 처리 (PATCH /todos/:id):
- 요청: { "done": true }
- 응답: { "id": 1, "value": "Buy vegetables", "done": true }
- 할일 삭제 (DELETE /todos/:id):
- 응답: { "message": "Todo deleted successfully" }
package.json
- 현재 프로젝트에 관한 정보과 패키지 매니저(npm, yarn) 등을 통해 설치한 모듈들의 의존성들을 모아놓고 관리하는 파일이다.
- 확장자 명에서 알 수 있듯이 JSON 의 형식으로 이루어진다 .
yarn init -y (그냥 package.json 만 생성)
yarn init (프로젝트 명 등의 작성할 내용 있는 경우)
을 입력하면 생성된다.
모듈 설치를 위해서는
yarn install 000
i.e. yarn install express 등을 통해서 설치 가능
회고
- 항해99 본 코스가 시작되고 3주가 지났다.
- 코드카타를 통해 알고리즘은 매일 하나씩 하며 그 감을 잃어버리지 않으려고 노력 중이다.
- 오늘 말해보카를 하며 문득 든 생각인데 사람의 기억력은 정말 단기간메모리여서 빠르게 까먹는다. 그래서 학습법을 빠르게 익혀서 보고 자주 보고 하나씩 해보면서 익숙하게 하는 방식으로 변경하려고 한다. 굳이 어렵게 할 필요가 전혀 없는 것 같다.
- 주특기 숙련 2주차에서는 로그인 기능을 다루고 심화 과정에서는 OOP 내용을 다루는 것 같다.
- 이제 벌써 4주차 들어간다. 이제 숙련과정을 들어가는데
- 2주차 게시판 프로젝트를 빠르게 마치고
- lv3 월,화,수 오전
- Lv4 수 오후, 목,금
- Lv5를 토,일,월 이렇게 마무리하고
- 다시 한 번 처음부터 복습을 하면 좋을 것 같다.
- 5주차가 끝나고 나면 주특기 6주차에는 주특기 1주일 프로젝트를 진행하고
- 7주차는 클론코딩을 하나 한후에
- 8주차 부터는 실전 프로젝트를 진행한다.
- 일단 lv5 까지는 수업 내용에 집중을 하며 기본기를 다지고 주특기 프로젝트 + 클론코딩 주간을 통해 제품을 만드는 것에 조금 더 익숙해지고 실전 프로젝트를 통해 제품 만들기 a to z를 경험해야겠다
- 너무 조급해하지 말고 차근차근 하나씩 공부해나가며 실력을 쌓자!