2016-08-24 3 views
0

특급을 배우고 문제에 직면했습니다. 내가 모듈 body-parser를 만든 후에 시작하지 마라. 모든 요청은 처리되지만 데이터는 구문 분석되지 않습니다.POST의 요청이 구문 분석하지 않는 이유는 무엇입니까?

let express  = require('express'); 
let bp    = require('body-parser'); 
let dishRouter  = require('./dishRouter'); 
let app   = express(); 
let hostname  = 'localhost'; 
let port   = 8080; 

dishRouter.use(bp.json()); //don't work 

app.use('/dishes', dishRouter); 
app.use(express.static(__dirname + '/public')); 
app.listen(port, hostname, function(){ 
    console.log(__dirname); 
    console.log(`Server has running at http://${hostname}:${port}`); 
}); 

// 내 dishRouter 모듈은 휴식 후 보내 그리워이 예를 들어

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

router.route('/') 
.all(function(req, res, next){ 
    res.writeHead(200, {'Content-type': 'text/plain'}); 
    next(); 
}) 
.get(function(req, res, next){ 
    res.end('We will dish for you'); 
}) 
.post(function(req, res, next){ 
    res.end('Will add the dish:' + req.body.name + ' with details: ' + req.body.description); 
}) 
.delete(function(req, res, next){ 
    res.end('Deleting all dishes'); 
}); 

module.exports = router; 
+1

위치 : 응용 프로그램/json'? 요청을 어떻게 수행하고 있습니까? – mscdex

+0

우편 배달부를 사용하고 루트 모듈의 코드가 주 코드가있는 파일 하나에있을 때 모든 코드가 완벽하게 작동합니다. 이제는 모든 요청이 작동하지만 body-parser는 작동하지 않습니다. 수출 모듈에서 문제가 될 수 있습니까? –

+0

이 문제를 결정합니다. 내 문자열 dishRouter.use에서 문제. 내가 표현한 객체라고 생각 하듯이 .Pouter()는 메소드를 사용하지 않는다. 쓰기가 필요합니다 : app.use (bp.json). 알아 냈어, 이건 내 잘못이야. 다들 감사 해요. –

답변

0

: 당신은 당신의 Content-Type '로 요청을 전송하고 있는지

app.route('/book') 
    .get(function(req, res) { 
    res.send('Get a random book'); 
    }) 
    .post(function(req, res) { 
    res.send('Add a book'); 
    }) 
    .put(function(req, res) { 
    res.send('Update the book'); 
    }); 
+0

'.send()'는 불필요하며이 코드는 질문의 코드와 동일합니다 (기본 상태 코드 200를 전송하고 전달 된 내용을 응답에 기록한 다음 응답을 종료 함). – mscdex

관련 문제