2016-07-19 3 views
2

Express을 사용하여 웹 API를 만들고 있습니다. 이 기능은 API 사용자가 파일을 서버로 보낼 수있게합니다.`bodyParser.raw()`를 사용하여 원시 본문을 가져 오는 방법은 무엇입니까?

var express = require('express'); 
var path = require('path'); 
// ... 
var bodyParser = require('body-parser'); 

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

// API routes 
var images = require('./routes/api/img'); 

var app = express(); 

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

app.use('/', routes); 
app.use('/api', images); 

// ... 

module.exports = app; 

내가 app.use(bodyParser.raw());을 사용하고 있음을 주목하십시오 :

여기 내 응용 프로그램 설치 코드입니다.

POST 요청에서 원시 바이트를 가져 오는 방법은 무엇입니까?

const express = require('express'); 
const router = express.Router(); 

/* POST api/img */ 
router.post('/img', function(req, res, next) { 

    // how do I get the raw bytes? 

}); 

module.exports = router; 
+0

코드 예제를 질문과 관련된 부분으로 좁혀보십시오. 이 경우에는 app.use 행과 두 번째 코드 스 니펫 중 일부만이 실제로 필요하다고 생각합니다. – Squirrel

답변

0

구문 분석 된 본문은 req.body으로 설정해야합니다.

미들웨어는 app.use으로 설정 한 순서대로 적용된다는 것을 명심하십시오. 본인의 이해대로 bodyParser를 여러 번 적용하면 해당 순서대로 본문을 구문 분석하여 마지막 결과를 남겨 둡니다. (즉 bodyParser.json()과 bodyParser.raw() 둘 다 입력을 모두 받아들이므로 실제로 Buffer에서 JSON으로 모든 것을 구문 분석하려고 시도 할 것입니다. req.body에서 작동하는 미들웨어.

+0

'bodyParser.raw()'미들웨어를 특정'Content-Type'으로 제한 할 수있는 방법이 있습니까? – Believe2014

+0

훌륭한 질문입니다. 분명히 있습니다! docs [1] (https://www.npmjs.com/package/body-parser#bodyparserrawoptions) raw 함수는 다음 키를 포함 할 수있는 옵션 옵션 객체를 사용합니다. 유형 옵션은 다음과 같습니다. 미들웨어가 구문 분석 할 미디어 유형을 결정하는 데 사용됩니다. 이 옵션은 함수 또는 문자열 일 수 있습니다. MIME 형식에 대해 와일드 카드를 허용하기 때문에 필요에 따라 세분화 할 수 있습니다. – Squirrel

관련 문제