(수근수근)

[ NodeJS ] Express 기초 본문

type & Javascript

[ NodeJS ] Express 기초

InformationFarm 2021. 10. 3. 16:22

해당 내용은 인프런의 '테스트주도개발(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