跳到主要内容
CNode

nodejs rest post json(非表单方式) 的问题请教

社区
Ccowcn发布于 13 年前最后回复 13 年前
175760

初学node,想基于node开放一个rest api,但是使用第三方应用向这个API post数据时取不到数据。以下的Demo主要部份(基于Express),demo单纯了为测试非form方式post数据时能否接收:

app.post('/postJsonTest', function(req, res){  
    res.set({'Content-Type':'text/json','Encodeing':'utf8'});
    var content= req.body;
    console.log(content);

//若是非form方式提交,这里就会为: {} })

然后我用chrome postman post Raw(json)方式post 以下json: { "Id" : 1, "content":'asdasdasdasdasd' }

node此时接收到的是:{}; 切换用form方式提交 node 就可以正常用req.body 取得post过来的数据;

非form方式,request header为 request payload; 是不是不能用 req.body接收非form post过来的数据还是怎么样,请各位大神指教下,谢谢!

查看回复

回复 (1)

C
cowcn#113 年前

。。。呃,不用expresion这样子实现还行,但express的实现方式应该要怎么写?

(非express 实现): var http = require('http');

function start() { function onRequest(request, response) { //var urlPath = url.parse(request.url).pathname; if (request.method == 'POST') { request.setEncoding('utf8');

var postData = ''; request.addListener("data", function(postDataChunk) { postData += postDataChunk; console.log("Received POST data chunk '" + postDataChunk + "'."); });

request.addListener("end", function() { var c = postData; console.log(c); }); } } http.createServer(onRequest).listen(8080); console.log('Service is started listen 8080!'); } start();

参与回复

登录后即可参与回复。登录