Express에서 body-parser가 필요하지 않은 이유: “bodyparser is deprecated”
사용환경
MacOS Catalina(10.15.7), VScode(1.55.2), Node JS(16.1.0), Express JS(4.17.1), body-parser(1.19.0)
소개
타이틀대로입니다만, 최신판의 Express(2021년 5월 5일 현재 npm부터 디폴트로 인스톨 할 수 있는 최신판이 v4. 17.1)로 body-parser가 필요 없다(=설치하지 않아도 좋다) 것을 알았습니다.
저는 현재 아래의 Udemy 인기 코스에서 Node JS와 Express를 배우고 있습니다.
The Complete 2021 Web Development Bootcamp
(URL) htps //w w. 우데 my. 코 m / r rse / te-ko mp ぇ te-u-b에서
튜토리얼에서 npm에서
body-parser
를 설치하고 req.body
를 작성하여 "클라이언트를 통해 서버로 전송 된 데이터를 검색 할 수 있음"을 알았습니다. $ npm install body-parser
//jshint esversion:6
const express = require("express");
const bodyParser = require("body-parser");
const app = express();
const port = 3000
app.use(bodyParser.urlencoded({
extended: true
}));
//途中略
app.post("/", (req, res) => {
var num1 = Number(req.body.num1);
var num2 = Number(req.body.num2);
var result = num1 + num2;
res.send("The result of the calculation is " + result);
})
//以下略
그러나 코드를 작성할 때 정의한
bodyParser
에 예기치 않은 정정선이 들어가 다음과 같이 뭔가 이상한 설명이 나왔습니다.(튜토리얼에서는 이런 나오지 않았어!? 눈물)
@deprecated
라고 하는 것은 “비추천의, 반대의”라고 하는 의미로, 그 아래에 「'body-parser'는 비추천입니다」라고 있는 대로, 그것이 이유로 이런 식으로 선이 들어가 있는 것 같습니다 .덧붙여서 이것을 무시해도 문제없이 그대로 코드는 실행할 수 있었습니다.
하지만 이대로 떠나는 것은 뭔가 기분 나쁘네요.
괜찮습니다. 제대로 해결책이있었습니다.
해결책
StackOverFlow나 Medium의 기사 등, 여러가지 조사해 본 결과, 아무래도 Express의 버젼 14.6.0 이후에서는
body-parser
는 표준 탑재되고 있는 것 같습니다.힘들지만 요컨대 최신 버전의 Express를 설치했다면 굳이 body-parser를 설치할 필요가 없다는 것입니다.
그렇다면 어떻게해야합니까?
$ app.use(bodyParser.urlencoded({extended: true}));
아래와 같이 기술하면 됩니다.
$ app.use(express.urlencoded({extended: true})); //Parse URL-encoded bodies
그건 그렇고,
.jason();
app.use(bodyparser.json());
아래와 같이 변경하면 OK입니다.
app.use(express.json());
이것으로 변경한 후에도,
req.body
(은)는 문제 없게 사용할 수 있습니다.(왜냐하면 Express에 body-parser가 표준 탑재되어 있기 때문에)
라고 하는 것으로,
body-parser
씨, 이제 당신은 사용이 끝났습니다. 바이바이! $ npm uninstall body-parser
const
에서 bodyParser 를 정의한 것도, 더 이상 필요하지 않으므로 이쪽도 지웁시다.덧붙여서, 전술한 완전한 코드는 이하와 같습니다.
//jshint esversion:6
const express = require("express");
//const bodyParser = require("body-parser"); ←もういらない
const app = express();
const port = 3000
//app.use(bodyParser.urlencoded({extended: true})); ←bodyParserを下記の通りexpressに変更
app.use(express.urlencoded({
extended: true
}));
//途中略
app.post("/", (req, res) => {
var num1 = Number(req.body.num1);
var num2 = Number(req.body.num2);
var result = num1 + num2;
res.send("The result of the calculation is " + result);
})
//以下略
마지막으로
앞서 언급했듯이 VS Code의 메시지를 무시하고 실행할 수 버립니다.
깨끗이 할 수있어서 좋았습니다.
부끄러워하면서, 조사하기 전에는, 「뭐, 움직이고 있고 무시하고 어쩐지 w」라고 생각하고 있었습니다.
이런 식으로 생각해도 해결되지 않는 것은 곧 구구해 해결해 나가는 스타일이, 결과적으로 배움이 많아지는 생각이 들었으므로, 계속해 가려고 생각합니다. (그리고 이런 식으로 배운 것을 출력하는 것도.)
참고로 한 사이트들
프런트 엔드 강화 월간 참가중! !
또한 Qiita의 프런트 엔드 강화 월간에도 참가중입니다!
무슨 타이밍 ... 이것을 계기로 프론트 엔드 기술을 단번에 배워갑니다.
이쪽 → Qiita 프런트 엔드 강화 월간
Reference
이 문제에 관하여(Express에서 body-parser가 필요하지 않은 이유: “bodyparser is deprecated”), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hirochan/items/e63d74cb70f0b97889fc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)