express.json 대 bodyParser.json


99

비교적 새로운 앱을 작성 중이며 어떤 앱을 사용해야하는지 궁금합니다.

express.json()

또는

bodyParser.json()

그들이 똑같은 일을한다고 가정해도 될까요?

express.json()이미 내장 된 그대로 사용 하고 싶습니다 .


express@4.17.1 단지 종속성 본체 파서 "1.19.0"를 사용
TAGI

답변:


233

이전 버전의 Express에는 많은 미들웨어가 번들로 포함되어있었습니다. bodyParser는 그것을 가져온 미들웨어 중 하나였습니다. Express 4.0이 출시되었을 때 그들은 번들로 제공되는 미들웨어를 Express에서 제거하고 대신 별도의 패키지로 만들기로 결정했습니다. 구문은 다음 변경 app.use(express.json())app.use(bodyParser.json())bodyParser 모듈을 설치 한 후.

bodyParser는 사람들이 이전과 같이 Express와 번들로 제공되기를 원했기 때문에 릴리스 4.16.0에서 Express에 다시 추가되었습니다. 즉 bodyParser.json(), 최신 릴리스 를 사용하는 경우 더 이상 사용할 필요가 없습니다 . express.json()대신 사용할 수 있습니다 .

릴리스 내역은 4.16.0에 대한 것이며 여기 에 관심이있는 사용자를위한 것이며 풀 요청은 여기에 있습니다 .


1
app.use(express.urlencoded({ extended: true }));그러면 우리도 할 수 있습니까 ?
Robin Métral

1
아 네, 당신이 연결 한 PR에도 언급되어 있습니다. 큰!
Robin Métral

1
그것은 그들이 같은 일을한다는 것을 의미합니까?
GNETO DOMINIQUE

둘 다 사용하면 어떻게 되나요 // 데이터 파싱 app.use (express.json ()); app.use (express.urlencoded ({extended : false})); 좋은가요? 왜냐하면 YouTube의 튜토리얼은 나에게 둘 다 사용하라고
말했기 때문입니다

1
@rickvian-원하는 경우 둘 다 사용할 수 있습니다. json은 JSON 용이고 urlencoded는 URL 인코딩 데이터 용입니다. 둘 다 추가하면 두 유형을 모두 구문 분석 할 수 있습니다.
Mika Sundland

14

예! 옳은

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');

var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', indexRouter);
app.use('/users', usersRouter);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  next(createError(404));
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;

31
이 코드 스 니펫은 질문을 해결할 수 있지만 설명을 포함하면 게시물의 품질을 개선하는 데 실제로 도움이됩니다. 앞으로 독자를위한 질문에 답하고 있으며, 해당 사용자는 코드 제안 이유를 모를 수 있습니다.
Brett DeWoody

8

네, 둘 다 동일합니다.

node_module / express / lib / express.js 파일로 이동하면

모듈 종속성 본문 파서 모듈이 이미 가져 왔습니다.

/**
 * Module dependencies.
 */

var bodyParser = require('body-parser')
//other modules

bodyparser 모듈 내부의 개체와 메서드는 특수 개체 모듈을 사용하여 내보낼 때 액세스 할 수 있습니다.

exports = module.exports = createApplication;
exports.json = bodyParser.json

이것은 단지 호출하여 표현 객체에서 액세스 할 수 있습니다.

express.json()
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.