npm init
"package.json" file 만들어짐
npm install 모듈명1 모듈명2
모듈설치, package.json에 설정된 모듈과 해당 모듈이 참고하고 있는 다른 모듈도 "node_modules폴더"에 설치됨. 배포시 포함하면 안되는 폴더
express.js
웹서버 자체가 아닌 Node.js로 서버를 빠르고 간편하게 만들 수 있게 도와주는 웹 프레임워크
? 이미 사용중인 포트를 찾아서 종료하고 싶다면?
1. 특정 포트 찾기
lsof -i :원하는 포트
kill -9 포트를 점유하고 있는 PID
Routing은 클라이언트의 요청 조건(메서드, 주소 등)에 대응해 응답하는 방식
Router: 클라이언트의 요청을 쉽게 처리할 수 있게 도와주는 Express.js 기본 기능 중 하나
// routes/goods.js
const express = require('express');
const router = express.Router(); // 익스프레스 Router 함수 사용
// localhost:3000/api/ GET
router.get("/", (req, res) => {
res.send("default url for goods.js GET Method");
});
// localhost:3000/api/about GET
router.get("/about", (req, res) => {
res.send("goods.js about PATH");
});
module.exports = router; // app.js에서 사용하기 위해 내보내 주는 코드 추가
// routes/index.js로 연결
const express = require('express');
const app = express();
const globalRouter = require('./routes');
const port = 4000;
app.use(express.json()); // req.body 바디파싱
app.use('/', globalRouter);
app.listen(port, () => {
console.log(`listening at http://localhost:${port}`);
});
Module
javascript 파일 단위로 분리된 코드
보통 한개의 파일이 한개의 모듈이 됨
// Module export하는 다양한 방법
(1) 화살표 함수
// 모듈을 호출했을 때, add 키 값에는 add 변수 함수가 가지고 있는 값이 할당된다.
const add = (a, b) => {
return a + b;
}
exports.add = add;
(2) 익명 함수
// 모듈을 호출했을 때, add 키 값에는 (a,b){return a + b;} 익명 함수가 할당되는 방법
exports.add = function (a, b) {
return a + b;
}
(3) 함수 선언문
// 모듈을 호출했을 때, add 키 값에는 add 함수가 들어가는 방법이다.
function add(a, b) {
return a + b;
}
module.exports = { add: add };
(4) 객체
// 모듈 그 자체를 add 함수로 할당
function add(a, b) {
return a + b;
}
module.exports = add;
Request: 클라이언트가 서버에게 전달하려는 정보나 메시지 담는 객체
Response: 서버에서 클라이언트로 응답 메시지 전송시켜주는 객체
Node.js 서버 모듈: 대표적으로 http 모듈과 Express 모듈 존재 (Express모듈이 http 모듈의 메서드도 사용할 수 있지만 추가 제공하는 메서드나 속성들을 사용할 수 있음)
Express 모듈의 req, res 객체
req.app
req 객체 통해 app 객체에 접근 가능
req.ip
요청한 클라이언트의 ip 주소
⭐️req.body
request 호출시 body로 전달된 정보 담김
express.json() Middleware를 이용해야 사용가능
데이터를 생성하거나 수정이 필요한 데이터의 전달을 위해 사용
POST, PUT과 같은 HTTP 메서드에서 사용
⭐️req.params
라우터 매개 변수에 대한 정보가 담김
⭐️req.query
쿼리 스트링으로 전달된 정보가 담긴 객체
클라이언트가 요청(Request)을 보냈을 때, URL에 원하는 Key-Value를 삽입하여 데이터를 전달합니다.
URL의 마지막에?
기호를 이용해 Query String을 사용할 수 있습니다.
ex)https://youtube.com?name=뽀짝이&age=27
특정 콘텐츠의 위치를 표시하거나 웹 페이지에 특정한 옵션을 설정할 때 사용합니다.
ex) 게시글의 정렬, 특정 날짜의 게시글만 출력하는 옵션 설정 등
GET과 같은 Http Method에서 사용됩니다.
req.cookies
request 호출 시 cookie정보가 담긴 객체
cookie-parser Middleware를 이용해야 해당 객체 사용가능
req.get(Header)
헤더에 저장된 값 가져오고 싶을 때 사용
res.app
res 객체를 통해 app 객체에 접근 가능
⭐️res.status(코드)
response에 HTTP 상태 코드 지정
⭐️res.send(데이터)
데이터를 포함하여 response 전달
⭐️res.json(JSON)
JSON형식으로 Response 전달
res.end()
데이터 없이 Response 전달
res.direct(주소)
리다이렉트할 주소와 함께 Response전달
res.cookie(Key, Value, Option)
쿠키 설정 시 사용
res.clearCokkie(Key, Value, Option)
쿠키 제거 시 사용