728x90
Express.js
- Node.js의 웹 프레임워크 중 가장 유명한 웹 프레임워크
필요에 따라 유연하게 구조 설정 가능
다양한 미들웨어를 통해 필요한 기능을 간단하게 추가 가능.
모든 동작이 명시적으로 구성되기 때문에
웹 프레임워크의 동작 방식을 이해하기 가장 좋은 프레임 워크
const express = require('express') // express.js 가져오기
const app = express() // 객체 만들기
app.get('/', (req,res) => { //만든 객체를 통해 동작 수행
res.send('Hello World!");
});
app.listen(3000);
express-generator with npm
$npm i -g express-generator
$express my-web
$cd my-web
$npm i
$npm start
express-generator with npx
$npx express-generator my-web
$cd my-web
$npm i
$npm start
my-web의 구성 by.elice
app객체
app 라우팅
app.get('/', (req, res) => {
res.send('GET /');
});
app.post('/', (req, res) => {
res.send('POST /');
});
app.all('/all', (req, res) => {
res.send('ANY /'); //<- 어떤 method건 상관없이 뒤에 있는 함수를 실행해라. (res.send 부분)
});
Express.Router - router는 app가 유사하지만 일반적 으로 모듈로 만들어서 사용한다.
const express = require ('express');
const router = express.Router();
router.get('/', (req,res,next) => {
res.send('respond with a resource');
});
//해당 url로 get방식으로 접근할 경우 뒤의 미들웨어가 실행될 수 있게 등록
router.get('/getlist', listcontroller.getList);
module.exports = router;
라우팅 path parameter 사용
/users/:id-/users/123,/users/456
/messages/:from-:to -/message/123-456
Requset Hadler
- 라우팅에 적용되는 함수를 의미
-HTTP 요청과 응답을 다룰 수 있는 함수로 설정된 라우팅 경로에 해당하는 요청이 들어오면
Request Handler 함수 실행
//매개변수 부터 함수 메인 내용까지를 가르킴
router.get('/:id, (req,res) => {
const id =req.params.id
res.send(`hello ${id}`);
});
Response 객체
HTTP 응답을 처리하는 객체
HTTP 응답의 데이터를 전송하거나, 응답 상태 및 헤더를 설정할 수 있음
1. req.params (path parameter)
app.get('/say/:greeting', (req, res) => {
const { greeting } = req.params;
res.send(greeting);
});
url 표현식에서 '/say/:greeting'이라고 입력한 부분에서
: 부분을 주목하자. 해당 코드에는 greeting 부분을 따올때
req.params이라는 method를 사용해서 담게된다.
Router 사용하기
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send("OK");
});
//routes directory에 위치한 users 모듈을 불러온다.
const userRouter = require('./routes/users');
//가져온 users 모듈을 /users 경로로 연결한다.
app.use('/users', userRouter); // app.use method는 해당 url에 있는 모든 url parsing case 들과
연결한다.
app.get('/users', userRouter); // 이경우 해당 url에 get방식만 해당.
app.listen(8080);
작성된 라우터 모듈을 app에 use 함수로 연결하여 사용가능
router 객체에도 하위 라우터를 use 함수로 연결하여 사용 가능
const userRouter = require('./routes/users');
const app = express();
//해당 url 경로일 경우 다음 모듈이 담당한다.
app.use('/users', userRouter);
const petRouter = require('./pets');
const router = express.Router();
router.use('/pets', petRouter);
module.exports = router;
//Router라는 변수에 우측 값을 할당한다라는 의미로 보면된다.
const {Router} = require('express');
const Router = require('express');
//객체로 예시를 직관적으로 살펴보면
let object ={
a : "aaaa"
};
// const a = object.a; 기존 javascript 문법
//object에 담겨있는 값 a를 받아온다라고 보면 될듯.
const {a} = object;
//다음과 같은 문법을 구사할 수 있다.
const object = { a: 1 };
const { a, b = 2 } = object;
index.js
const express = require('express');
const userRouter = require('./routes/users');
const app = express();
app.get('/', (req, res) => {
res.send("OK");
});
/* 라우터를 '/users' 경로에 연결 */
app.use('/users', userRouter);
app.listen(8080);
users.js
// default url은 /users이다.
const { Router } = require('express');
const petsRouter = require('/pets'); // 이 친구는 단순히 pets router가 담겨있는 경로를 가르킨다고 생각
const router = Router();
router.get('/', (req, res) => {
res.send('GET /users');
});
/* /:userId/pets 경로에 petsRouter 연결 */
router.use('/:userId/pets',petsRouter); ///:userId/pets 이 url은 내 관할 구역이 아니다.
// 대신 petsRouter을 연결해주겠다.
module.exports = router;
pets.js
const { Router } = require('express');
const router = Router({ mergeParams: true });
/* GET 라우팅 추가 */
router.get('/', (req, res) => {
const { userId } = req.params;
res.send(`Pets of user ${userId}`);
});
module.exports = router;
res.render
// res.render("ejs 파일경로",{데이터이름:전송할 데이터}
res.render('index', {title: 'test', rows: rows});
728x90
'Node.js' 카테고리의 다른 글
[Node.js, 개인프로젝트] CRUD 기능 만들기 - GetList (0) | 2022.10.10 |
---|---|
[Node.js]쿼리 스트링 다루는 방법 (0) | 2022.10.08 |