2013-11-01 23 views
5

Restify(とNodeJS一般)を試してみると、ユーザーのPOSTデータを取得するのに手間がかかります。Restify 2.6投稿データ

私は基本的なノードアプリケーションを持っています。ドキュメントやブログ記事では、queryParserを使用するのと同じくらいシンプルですが、動作しません。私は問題が私のCURLコマンドにあると思う。

ノードのApp:

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 

応答は次のとおりです。

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

{} 

とノードのログは以下のとおりです。

restify listening at http://0.0.0.0:8080 
undefined 
{} 
{} 
誰かが私を助けることができる

希望:)

ケビン

答えて

1

利用代わりqueryParserののbodyParser。あなたが必要になりますあなたのRESTfulなサービスでHTTP POSTリクエストを経由して送信されたJSON文書を処理するために

0

  1. 使用bodyParserあなたのサービスで
  2. 確認には、HTTPヘッダーが含まれてください"Content-Type:application/json"
を送信すると、が返されます。 -H を:-X POSTは-H -is "アプリケーション/ jsonのContent-Typeの"

カール:

あなたのCURLコマンドは次のようになります " - 受け入れるバージョン:1.0.0" "{」-d名前 ": "ジョン"}」 http://127.0.0.1:8080/users

あなたRestifyサービスコード:

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); 
 
});

幸運!