Javascript 烧瓶不';看不到节点发送的JSON数据
我试图使用节点将JSON数据发送到Flask,但无法读取Flask中的数据。我尝试在烧瓶中打印Javascript 烧瓶不';看不到节点发送的JSON数据,javascript,python,json,node.js,flask,Javascript,Python,Json,Node.js,Flask,我试图使用节点将JSON数据发送到Flask,但无法读取Flask中的数据。我尝试在烧瓶中打印request.data,但没有输出任何内容。我还尝试打印request.json,但它返回了400响应。为什么Flask看不到节点发送的JSON数据 from flask import Flask from flask import request app = Flask(__name__) @app.route("/", methods=['GET', 'POST']) def hello():
request.data
,但没有输出任何内容。我还尝试打印request.json
,但它返回了400响应。为什么Flask看不到节点发送的JSON数据
from flask import Flask
from flask import request
app = Flask(__name__)
@app.route("/", methods=['GET', 'POST'])
def hello():
if request.method == "POST":
print "POST";
print "get_json: ", request.get_json();
# print "get_json: ", request.get_json(force = True);
print "data: ", request.data;
return 'POST';
else:
print "GET";
return "GET";
if __name__ == "__main__":
app.run()
var async=require('async'),
http=require('http'),
util=require('util');
变量服务器={
主机名:“127.0.0.1”,
港口:5000
};
函数请求(方法、路径、头、正文、回调){
var req={};
如果(!头){
标题={};
}
标题['Content-Type']='application/json';
console.log(方法+“”+路径);
log('Req:');
log('headers:'+JSON.stringify(headers));
如果(正文){
log('body:'+JSON.stringify(body));
}否则{
log('no body');
}
req=http.request({
主机名:server.hostname,
端口:server.port,
路径:路径,
方法:方法,,
标题:标题
},(res)=>{
var resbody='';
res.on('数据',(块)=>{
resbody=resbody+chunk;
});
res.on('结束',()=>{
console.log('Res:');
log('headers:'+JSON.stringify(res.headers));
如果(正文){
log('body:'+JSON.stringify(resbody));
}否则{
log('no body');
}
回调(resbody);
});
}
);
请求开启('错误',(错误)=>{
console.log(方法+''+path+'ERR:'+util.inspect(ERR));
回调(err);
});
如果(正文){
请求写入(JSON.stringify(body));
}
请求结束();
}
请求('POST','/',null,{foo:'bar'},(res)=>{});
JavaScript的输出:
POST/
请求:
标题:{“内容类型”:“应用程序/json”}
正文:{“foo”:“bar”}
物件:
标题:{“内容类型”:“文本/html”,“内容长度”:“192”,“服务器”:“Werkzeug/0.11.11 Python/2.7.11”,“日期”:“Fri,09 Sep 2016 10:29:58 GMT”}
正文:“\n400错误请求\n错误请求\n浏览器(或代理)发送了此服务器无法理解的请求。\n”
Python的输出:
POST
get_json:127.0.0.1---[09/Sep/2016 12:29:58]“POST/HTTP/1.1”400-
编辑以更新所有代码 卷曲:
>curl.exe 127.0.0.1:5000--标题“内容类型:应用程序/json”--数据{“foo\”:“bar\”}
邮递
Python服务器运行正常,问题在于手工编写的http请求,由于某种原因,它的格式不正确
使用该模块可以:
var request = require('request');
request({
method: 'POST',
url: 'http://127.0.0.1:5000',
// body: '{"foo": "bar"}'
json: {"foo": "bar"}
}, (error, response, body) => {
console.log(error);
// console.log(response);
console.log(body);
});
如果要使用
http://httpbin.org/post
您会得到一个JSON响应,它会回显您发送的内容;您将得到相同的结果(POST body中没有发送任何内容)。啊,我看到它在哪里编写JSONified body了。但是我没有看到任何内容长度标题被设置;查看文档,他们在代码中显式设置了该标题。@MartijnPieters:设置或不设置内容长度
不会改变任何内容,您确定的url吗http://httpbin.org/post
?我得到了ADDRNOTFOUND
curl怎么办?@hjpotter92:与node.js版本相同的错误。然而,邮递员确实在工作。