Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 烧瓶不';看不到节点发送的JSON数据_Javascript_Python_Json_Node.js_Flask - Fatal编程技术网

Javascript 烧瓶不';看不到节点发送的JSON数据

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():

我试图使用节点将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():
    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版本相同的错误。然而,邮递员确实在工作。