GULGUL CODING
[ExpressJS] Body-parser 본문
참고사이트 : https://expressjs.com/en/resources/middleware/body-parser.html
1. Parsing / Parser
👉Parsing(파싱) 이란?
간결하게 말하면 구문분석이라고 한다.
즉, 데이터를 조립해 원하는 데이터를 빼내는 작업을 하는것을 말한다.
👉Parser(파서)란?
Parsing을 수행하는 프로그램을 말한다.
interpreter나 compiler의 구성요소 가운데 하나로 입력 tocken에 내재된 자료구조를 빌드하고 문법을 검사한다.
2.Body-parser
Node.js의 구문분석 미들웨어로써,
핸들러에게 가기 전 요청하는 본문의 데이터를 파싱한다.
.📁 body-parser 가 parsing 하는 것
- JSON body parser
- Raw body parser
- Text body parser
- URL-encoded form body parser
📁 설치
해당 프로젝트 터미널에
$npm install body-parser
📁 사용
let bodyParser=require('body-parser')
요청 후 사용한다.
const express=require('express');
const fs=require('fs/promises');
//const pug=require('pug');
const app=express();
app.set("views","./views");//default로 pug의 경로를 views로 설정!
app.set('view engine','pug');
app.use(express.static("public"));//url Encoding
app.get("/",(req,res)=>{
//🎃[과거 pug 사용예시]
// let html =pug.renderFile('./views/index.pug');
// res.write(html);
// res.end();
//😎[render를 이용해 간단하게 연결할 수 있다.]
res.render('index',{a:10,b:20});
})
//[bodyParser 없이 쿼리스트링 받기]-------------------------------------------
const querystring=require('querystring');
app.post("/signup.do",(req,res)=>{
let bodyQueryString="";
//🎃
//req.on("data",()=>{}) : 요청헤더의 쿼리스트링을 읽어오겠다.
req.on("data",(data)=>{
bodyQueryString+=data;
})
req.on("end",()=>{
const params=querystring.parse(bodyQueryString);
res.send(JSON.stringify(params));
})
})
//[bodyParser을 사용해서 같은내용 구현하기.]-------------------------------------------
const bodyParser=require("body-parser");
app.use(bodyParser.urlencoded({extended:false}));//[🍓]
add.post("/signup2.do",(req,res)=>{
res.send(JSON.stringify(req.body));
})
/*[🍓]
req.body 필드가 추가되고 body의 쿼리스트링이 object로 들어간다.(=파싱하고있다.)
[ extended: false ] : nodejs에서 제공하는 queryString 을 사용해서 파싱 하겠다.
[ extended: true ] : 확장 모듈(외부모듈)인 qs를 사용해서 파싱하겠다.
*/
app.listen(8887,()=>{
console.log("http://localhost:8887 미들웨어로 bodyParser 적용");
})
'JS > Express.JS' 카테고리의 다른 글
[Express.Js] Express MiddleWare (0) | 2023.03.14 |
---|---|
[Express.Js] Hello Express Js! (0) | 2023.03.02 |
Comments