Node.js 환경 위에서 실행될 서버 프로그램을 만들 때 사용할 수 있는 웹 프레임워크
다른 프레임워크에 비해, 프로그램 전체 구조에 관해서 미리 정해진 패턴이 없는 편이라서 좀더 자유롭게 패턴을 구현할 수 있음
(서버의 역할과 리스폰스의 내용을 기준)
웹 서버
화면을 그리는 데 필요한 HTML, CSS, JavaScript 코드, 이미지 등을 리스폰스에 담아서 주는 형태
API 서버
클라이언트가 요청한 작업을 처리하고 그 결과 데이터를 JSON, XML 등의 형식으로 리스폰스에 담아서 주는 서버
app.listen(3000, ()=>{
console.log("Server is listening...")
});
웹 브라우저에서 도메인 주소(codeit.kr, www.naver.com 등)나 ip 주소(5.22.123.542, 127.0.0.1 등) 뒤에 그대로 적어줘야(:80, :3000 등) 이 서버 프로그램과 통신
# 패키지를 만들자
app.js 맏늘기
(env03) C:\NodeJs\Express\company>npm init

(env03) C:\NodeJs\Express\company>npm install express

express로 만든 객체는 관습적으로 ' app ' 이라고 명칭한다.
/hello가 오면은(req, res) => {
res.send('<h1>오늘도하루도화이팅</h1>');
} 함수 실행(=콜백 함수, router handler)
const express = require("express");
const app = express();
app.get('/hello', (req, res) => {
res.send('<h1>오늘도하루도화이팅</h1>');
});
app.listen(3000);
app.listen(3000); // port번호 3000 (
서버안에서 실행되는 여러 프로그램들 중 특정 프로그램을 식별 할 수 있게 해 주는 번호
(env03) C:\NodeJs\Express\company>node app.js

server가 request에 response를 할 준비를 마치고 나면 실행
app.listen(3000, ()=>{
console.log("Server is listening...")
});
(env03) C:\NodeJs\Express\company>node app.js
Server is listening...
const express = require("express");
const app = express();
const members = require("./members");
app.get('/api/members', (req, res) => {
res.send(members);
});
app.listen(3000, ()=>{
console.log("Server is listening...")
});
==> /api/members , 이 특정 path가 오면은
뒤에 있는 route handler에 대한 함수가 실행이 된다.
// id 는 가변적인 값으로, Route Parameter라고 한다.
app.get('/api/members/:id', (req, res) => {
// route Parameter 가져오기
// const id = req.params.id;
const {id} = req.params;
// member객체의 id값은 number인데 , router객체의 id값은 string타입이다. 따라서 Number로 변환? 해줘야 한당
const member = members.find((m) => m.id === Number(id));
if (member) {
res.send(member);
} else{
// API객체에는 그냥 바로 문장을 주는 것 보다는 JSON객체로 담아서 주는 것이 나중에 확장성이나 유지보수에 더 좋다
res.status(404).send({"Message": "There is no such member"});
}
});

