web関連の初心者です。
実験的に簡単なWebAPIを作成したく、node.js + EXPRESSでサーバを記述し、クライアントからcurlで叩いて確認をしようとしています。
curl
1curl -X POST -H 'Content-Type:text/json' -d "{ \"Val\": \"1\" }" http://URL:3000/api/v1/post/001
に対してサーバで{"Val","1"}を受け取ろうとしています。
サーバ側は、npm install express-generator -gで生成したものに対し、myapp/routes/index.jsを以下のように変更しました。
javascript
1var express = require('express'); 2var router = express.Router(); 3 4// TESTデータ 5var testList = [{node: "001", data: "0"},{node: "002", data: "0"}] 6router.post( '/api/v1/post/:node', function( req, res, next ) { 7 var testdata; 8 for ( lp1 = 0; lp1 < testList.length; lp1++ ) { 9 if ( testList[lp1].node == req.params.node ) { 10 testdata = testList[lp1]; 11 break; 12 } 13 } 14 res.json( testdata ); 15 console.log( req.body ); 16}); 17module.exports = router;
サーバのconsole.logで表示される期待値は、curl -dで指定した'{"Val":"1"}'なのですが、"{}"のような空のjsonが表示されます。expressのPOSTでreq.bodyを受け取るためにはどのようにすれば良いのでしょうか。各サイトを漁ってツギハギしてみたりEXPRESSのドキュメントを理解できていないのでトンチンカンな事をしているのだと思いますが、ぜひヒントをいただければ助かります。
以下の環境で実装しています。
- サーバ:Amazon Linux AMI 2017.09.1
- node.js:v9.4.0
- express:4.15.5
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/15 03:20