2013-11-01 16 views
5

Tôi chỉ mới bắt đầu thử Restify (và NodeJS nói chung) và tôi gặp một số rắc rối khi nhận dữ liệu POST của người dùng.Phục hồi dữ liệu bài đăng 2.6

Tôi có ứng dụng Nút cơ bản. Trên tài liệu và một số bài đăng trên blog tôi đọc nó đơn giản như sử dụng queryParser nhưng nó không hoạt động. Tôi nghĩ rằng vấn đề là trên lệnh CURL của tôi.

Node App: lệnh

var restify = require('restify'); 

function userCreation(request, result, next) { 
    console.log(request.body); 
    console.log(request.query); 
    console.log(request.params); 
    result.send({ name: request.params.name }); 
    return next(); 
} 

var server = restify.createServer({ version: '1.0.0' }); 
server.use(restify.gzipResponse()); 
server.use(restify.queryParser()); 

server.post({ path: '/users', versions: ['1.0.0'] }, userCreation); 

server.listen(8080, function() { 
    console.log('%s listening at %s', server.name, server.url); 
}); 

CURL:

curl -is -X POST -H 'accept-version: 1.0.0' -d '{ "name": "John" }' http://127.0.0.1:8080/users 

curl -is -X POST -H 'accept-version: 1.0.0' -d 'name=John' http://127.0.0.1:8080/users 

Câu trả lời là:

HTTP/1.1 200 OK 
Content-Type: application/json 
Content-Length: 2 
Date: Fri, 01 Nov 2013 09:40:08 GMT 
Connection: keep-alive 

{} 

Và các bản ghi Node là:

restify listening at http://0.0.0.0:8080 
undefined 
{} 
{} 

Hope ai đó có thể giúp tôi :)

Kevin

Trả lời

1

Sử dụng bodyParser thay vì của queryParser.

0

Để xử lý các tài liệu JSON được gửi qua các yêu cầu HTTP POST phục vụ RESTful của bạn, bạn sẽ cần:

  1. Sử dụng bodyParser trong dịch vụ của bạn
  2. Hãy chắc chắn để bao gồm các HTTP Header "Content-Type: application/json" khi bạn gửi yêu cầu HTTP POST

lệnh CURL của bạn nên được một cái gì đó như:

curl -là -X POST -H "Content-Type: application/json" -H "chấp nhận phiên bản: 1.0.0" -d '{ " tên ": "John"}' http://127.0.0.1:8080/users

đang Restify Your Service:

var restify = require('restify'); 
 

 
function userCreation(request, result, next) { 
 
    console.log(request.body); 
 
    result.send({ 
 
    name: request.body.name 
 
    }); 
 
    return next(); 
 
} 
 

 
var server = restify.createServer({ 
 
    version: '1.0.0' 
 
}); 
 

 
server.use(restify.gzipResponse()); 
 
server.use(restify.bodyParser()); 
 

 
server.post({ 
 
    path: '/users', 
 
    versions: ['1.0.0'] 
 
}, userCreation); 
 

 
server.listen(8080, function() { 
 
    console.log('%s listening at %s', server.name, server.url); 
 
});

Chúc may mắn!

Các vấn đề liên quan