~오늘의 수강 과목~
1. Node.js 입문 1주차 (이용우 튜터님)
_ express, module, router, req / res, api
2. Node.js 입문 2주차 (이용우 튜터님)
_ MongoDB, schema, middleware
Express
Node.js 코드를 쉽게 짤 수 있게 도와주는 라이브러리
터미널로 yarn add express를 실행하면 package.json 파일에 express 설치가 기록되고, node_modules 폴더가 생성되는데 여기에는 라이브러리에 필요한 파일들이 담겨있다.
Module
자바스크립트를 파일 단위로 분리한 코드의 덩어리
a.js 파일에서 짠 코드를 b.js 파일에서도 사용할 수 있게 해준다.
코드를 재사용할 수 있기 때문에 구조적인 관리가 용이
CJS(CommonJS)
Node.js 환경에서 기본적으로 사용되는 모듈
require 함수로 불러올 수 있음
require 함수의 코드 위치는 상관없음
ESM(ECMA Script Module)
Node.js 뿐 아니라 모든 자바스크립트 환경에서 통일되게 사용할 수 있도록 제공
package.json 파일에 “type”: “module” 을 추가하면 사용 가능
(= CJS가 아닌 ES6 모듈을 쓰겠다고 선언하는 것과 같음)
import로 불러오고 export로 내보낼 수 있음
import문은 코드의 최상단에 위치해야함
Router
routing이란?
클라이언트에게 응답(response)하는 방식
Router란?
express 라이브러리에 내장된 기본 성능
클라이언트의 요청을 쉽게 처리할 수 있도록 도와줌
기본 문법
router.method(path, handler);
import express from ‘express’;
const router = express.Router();
router.get(‘/products’, (req, res) => { // get 메서드로 /products url에 도착했을때 오른쪽에 있는 핸들러를 실행시켜라
res.json(‘어쩌고저쩌고’);
})
export default router;
/products 주소에서 get 메서드로 요청이 들어오면 오른쪽 함수를 실행할거고
이 함수는 최종적으로 json 형태로 반환
API
api는 정보 자체보다는 정보를 주고 받는 방법에 가까움
어떻게 요청할지? <-> 어떤 형식으로 받을지?
REST API의 구성
1. 자원(리소스) - url
/products 혹은 /cart 등
2. 행위 - http 메서드
GET, POST, PUT, PATCH, DELETE
CRUD
3. 표현
json, xml
API 클라이언트란?
API 요청 확인 혹은 테스트에 도움을 주는 툴
저번 개인 프로젝트에서는 insomnia 를 사용했으며, vscode 익스텐션인 thunder client 도 추천받았는데 이건 매번 넘겨보며 확인할 필요 없이 vscode 내에서 사용이 가능하다고 한다.
GET 메서드는 브라우저에서도 확인이 가능하지만, 그 외 작업은 API 클라이언트를 사용해야 주고받는 데이터를 눈으로 확인할 수 있어 편리하다.
요청 request / 응답 response
request
클라이언트 -> 서버로 요청
response
서버 -> 클라이언트로 응답
자주 사용되는 객체
req.body()
req.params()
req.query()
(req 객체 부분만 유일하게 이해를 아직 못해서 좀 더 공부 후 따로 글을 빼서 정리해봐야겠다)
res.status(코드) : 클라이언트에게 201, 404 등의 http 상태코드를 지정해줌
res.status(200);
res.send(데이터) : 클라이언트에게 특정 데이터(문자열, 객체 등)를 포함하여 응답 전달
res.send('피곤하다');
res.json(json) : 클라이언트에게 json 형식(=객체형)으로 응답 전달
res.json({ message: ‘피곤해’ });
오늘의 메모
- 과제 시작 전에 강의를 들었을 때는 어렵다고 느껴졌는데, 개인과제 후 복습을 위해 다시 들어보니 이제 슬슬 구조가 잡히는 것 같다.
얼른 정리해서 블로그에 올린다. - 처음에 어렵다고 느꼈던 이유는 지금 배우는 기능들이 각각 어떤 목적을 가지고 있고 어떻게 유기적으로 이어져있는지 보이지 않아서였다.
그래서 이번 복습 때는 각 기능의 목적을 확실히 정리해두는 것으로 진행했다.
내일의 목표
- 노드 숙련 강의 주말까지 1주차 끝내기
- 노드 기초 2주차 복습 글도 올리기
앞으로의 목표
- 월요일에 다가올 개인과제를 기다리며 심호흡하기🥺
- 1번에서 이어지는 목표인데 이번 과제는 제시간에! 완성해서! 내는 것이 목표이다
(첫번째 과제는 완성을 못했고 두번째 과제는 완성은 했으나 2차 시간이 지나서 제출했기 때문에 점점더 발전시킨다는 느낌으로..) - 이거 전부 체크하기!

'⌨️ > Node.js' 카테고리의 다른 글
[Node.js] npx prisma db push (0) | 2024.01.31 |
---|---|
[Node.js] MongoDB, Mongoose, schema, model 정리 (1) | 2024.01.28 |
[Node.js] listen EADDRINUSE: address already in use 에러 (1) | 2024.01.25 |
[Node.js] The 'uri' parameter to 'openUri() must be a string··· 에러 (1) | 2024.01.24 |
[Node.js] 기본적인 백엔드 개발 환경 셋팅 (yarn, express 설치) (0) | 2024.01.23 |