express 분석 post 방식 의 json 매개 변수
3321 단어 web
node. js 에서 가장 유명한 웹 프레임 워 크 express, 이전 저 버 전 (4.0 이하) 에 의존 해 야 할 것 같 습 니 다. body Parser 가방 으로 요청 체 를 분석 합 니 다.
Express 3. x 와 4. x 버 전의 차이 점 이 박문 에 대한 이 해 를 보십시오.
나중에 버 전 으로... body Parser 계승,
express 설정 항목 에 user (express. body Parser ({keepExtensions: true, uploadDir: '/ tmp'}) 가 필요 합 니 다.
다음 코드:
var express = require('express'),
app = express();
app.configure(function () {
app.use(express.bodyParser({ keepExtensions: true, uploadDir: '/tmp' }));
});
현재 Express 4.0 최신 버 전 은 body Parser 를 다시 꺼 냈 습 니 다. body - parser 는 npm install 로 설치 하여 사용 해 야 합 니 다.
npm install body-parser
Express 4.0 이상 버 전 은 시작 파일 에서 다음 과 같은 설정 을 해 야 합 니 다.
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
var server = require('http').createServer(app);
app.use(bodyParser.json({limit: '1mb'})); //body-parser json
app.use(bodyParser.urlencoded({ // bodyParser.json ,
extended: true
}));
만약 당신 의 인터페이스 가 post 에 올 라 오 는 데이터 형식 을 요구한다 면:
{"data":{"name":" ","age":25}}
백 엔 드 express 가 body Parser 의 분석 에 들 어가 면 데 이 터 를 이렇게 읽 을 수 있 습 니 다.
req. body. data. name (장 삼 가 져 오기)
req. body. data. age (나이 까지 획득)
그러나 여 기 는 전제 가 있 습 니 다. 클 라 이언 트 가 인 터 페 이 스 를 요청 할 때 요청 헤더 형식 을 지정 해 야 합 니 다. Content - type = application / json
body Parser 는 이러한 유형의 요청 헤드 를 발견 하면 자동 으로 body 의 json 형식 데 이 터 를 정확하게 해석 합 니 다. 그렇지 않 으 면 req. body. data 는 undefined 입 니 다.
전통 적 인 서버 엔 드 언어 는 post 에서 올 린 흐름 을 받 은 다음 문자열 로 바 꾸 어 마지막 으로 json 으로 포맷 할 수 있 습 니 다. 이렇게 application / json 을 추가 하지 않 습 니 다. 요청 헤드 는 모두 문제 가 없습니다.
그러나 Express 미들웨어 는 body 의 post 매개 변 수 를 분석 할 때 Content - Type 형식 을 검사 하기 때문에 정확 한 형식 을 지정 하지 않 아 미들웨어 분석 매개 변수 가 잘못 되 었 습 니 다.
그럼 어떻게 처리 할 까요?
많은 곳 에서 당신 의 인 터 페 이 스 를 호출 하고 있 기 때문에, 당신 은 모든 사람 이 요청 머리 에 넣 었 다 는 것 을 보증 할 수 없습니다. Content-Type=application/json
해결 방향 은:
서버 쪽 에서 먼저 req. body. data 매개 변수 로 파 라 메 터 를 가 져 옵 니 다. 성공 하면 설명 합 니 다. body Parser 는 json 인 자 를 정확하게 분 석 했 습 니 다. 아니면 이전 방법 으로 읽 었 습 니까?
req. body. data 매개 변수 가 값 이 없 거나 undefined 가 없 으 면 우 리 는 흐름 으로 post 데 이 터 를 읽 은 다음 문자열 로 바 꾸 어 json 형식 으로 해석 하여 사용 합 니 다. 코드 를 직접 올 립 니 다.
app.post('/post', function (req, res) {
if (req.body.data) {
// json post
res.send({"status": "success", "name": req.body.data.name, "age": req.body.data.age});
} else {
// json post
var body = '', jsonStr;
req.on('data', function (chunk) {
body += chunk; //
});
req.on('end', function () {
// body JSON
try {
jsonStr = JSON.parse(body);
} catch (err) {
jsonStr = null;
}
jsonStr ? res.send({"status":"success", "name": jsonStr.data.name, "age": jsonStr.data.age}) : res.send({"status":"error"});
});
}
});
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Portswigger의 연구실 작성: CSRF 토큰 보호를 사용한 기본 클릭재킹이 견습생 수준 실습에서는 일부 CSRF 토큰 보호가 있음에도 불구하고 클릭재킹에 취약한 웹사이트에서 계정 삭제 흐름을 악용합니다. 주어진 자격 증명으로 로그인하면 계정 페이지로 이동한 후 사용자 계정을 삭제하는 데...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.