(수근수근)
[ NodeJS ] Express 기초 본문
해당 내용은 인프런의 '테스트주도개발(TDD)로 만드는 NodeJS API 서버'를 정리한 내용입니다.
npm install express로 Express를 다운받은 가정하에 진행합니다.
ExpressJS?
ExpressJS는 Nodejs로 만들어진 웹프레임워크입니다.
https://expressjs.com/ → 해당사이트에서Express에 대한 내용을 자세히 할 수 있습니다
시작하기를 읽어보는 것을 추천드립니다
[ 📝 Expressx개념.1 ] 어플리케이션
- 익스프레스 인스턴스를 어플리케이션이라고한다
const express = require('express');
const app = express(); //여기서 app을 어플리케이션이라고 합니다
- 서버에 필요한 기능인 미들웨어를 어플리케이션에 추가한다
- 라우팅 설정을 할 수 있다.
- 서버를 요청 대기 상태로 할 수 있다.
app.listen(3000, function(){
console.log('server is running')
})
[ 📝 Expressx개념.2 ] 미들웨어
- 미들웨어는 함수들의 연속이다
- 로깅 미들웨어를 만들어 보자
- 미들웨어를 추가할 때는 use(middleware)를 사용하시면 됩니다.
function logger(req, res , next){
console.log('I am logger');
//middleware는 자기 할 일을 하다면 next함수를 호출해야한다
next();
}
app.use(logger) //미들웨어를 추가할 때는 use함수를 사용한다
- 미들웨어 두 개를 활용해보자.
function logger(req, res , next){
console.log('I am logger');
next();
}
function logger2(req, res , next){
console.log('I am logger');
next();
}
app.use(logger)
app.use(logger2)
→결과
logger를 진행하고 next를 통해서 다음 미들웨어인 logger2를 실행합니다.
- 만약 logger미들웨어의 next를 없앤다면?
다음 미들웨어를 실행하지 않고 자신의 기능만 실행합니다.
- 써드파티 미들웨어를 사용해봅시다
다른 사람의 미들웨어는 모듈형태로 제공됩니다.
→ npm install morgan
을 추가합니다
const morgan = require('morgan');
app.use(logger)
app.use(logger2)
app.use(morgan('dev'))
→ 결과
- 에러 미들웨어
- 일반미들웨어는 파라미터를 3개를 받습니다. (req, res, next)
- 에러 미들웨어 error객체까지 파라미터를 4개 받습니다.
const express = require('express');
const app = express(); //여기서 app을 어플리케이션이라고 합니다
function commonmw(req, res, next){
console.log('commonmv');
next(new Error('error ouccered'));
}
function errormw(err, req, res, next){
console.log(err.message);
//전달받은 에러 출력 및 결과처리
next();
//if error를 처리하지 못하고 다른 미들웨어에게 넘겨주고 싶다면?
//next(err)
}
app.use(commonmw);
app.use(errormw);
app.listen(3030, function(){
console.log('server is running')
})
→ 결과
[ 📝 Expressx개념.3 ] 라우팅
- 요청 URL에 대해 적절한 핸들러 함수로 연결해 주는 기능을 라우팅이라고 부른다
- 어플리케이션의 get(), post() 메소드로 구현할 수 있다.
- 라우팅을 위한 전용 Router클래스를 사용할 수도 있다.
[ 📝 Expressx개념.4 ] 요청객체
- 클라이언트 요청정보를 담은 객체를 요청(Request)객체라고 합니다.
- http모듈의 request객체를 래핑한 것입니다
- http보다 조금 쉽게 사용할 수 있게 됩니다.
- req.params(), req.query(), req.body()메소드를 주로 사용합니다.
[ 📝 Expressx개념.5 ] 응답객체
- 클라이언트 응답 정보를 담은 객체를 응답(Response)객체 라고 한다
- http모듈의 response 객체를 래핑한 것입니다.
- res..send(), res.status(), res.json() 메소드를 주로 사용합니다.
✋🏼 Hello Express
Express의 hello world예제를 사용해봅니다.
http://expressjs.com/ko/starter/hello-world.html
var express = require('express'); //모듈가지고 오기
var app = express(); // 할당
//라우팅 설정부분
app.get('/', function (req, res) {
//req, res http를 한번 wrapping한 객체
res.send('Hello World!');
});
app.listen(3030, function () {
console.log('Example app listening on port 3030!');
});
→ 결과(server)
→ 결과(client)
'type & Javascript' 카테고리의 다른 글
[NodeJS]테스트 주도개발 (0) | 2021.10.03 |
---|---|
[NodeJS] REST API란 (0) | 2021.10.03 |
[NodeJS] Hello Node (0) | 2021.10.03 |
[NodeJS] Nodejs 기초 (0) | 2021.10.01 |
[JS] JSON데이터 CSV파일로 저장 (0) | 2021.09.26 |
Comments