【发布时间】:2019-02-26 04:06:57
【问题描述】:
您好,我正在尝试将数据从节点发送到 python。我读到这可以通过带有 express 和 Flask 的 2 个服务器来实现。但是,当我运行代码时,我收到一个错误(见下文)
Python 脚本
from flask import Flask, request
import json
app = Flask(__name__)
@app.route('/')
def index():
return "Flask server"
@app.route('/postdata', methods = ['POST'])
def postdata():
data = request.get_json()
print(data)
# do something with this data variable that contains the data from the node server
return json.dumps({"newdata":"hereisthenewdatayouwanttosend"})
if __name__ == "__main__":
app.run(port=5000)
节点脚本
var express = require('express');
var bodyParser = require('body-parser');
var request = require('request-promise');
var app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.get('/postdatatoFlask', async function (req, res) {
var data = {
data1: "foo",
data2: "bar"
}
var options = {
method: 'POST',
uri: 'http://localhost:3000/postdata',
body: data,
json: true // Automatically stringifies the body to JSON
};
var returndata;
var sendrequest = await request(options)
.then(function (parsedBody) {
console.log(parsedBody);
returndata = parsedBody;
})
.catch(function (err) {
console.log(err);
});
res.send(returndata);
});
app.listen(3000);
但是,如果我现在尝试使用 http://localhost:3000/postdatatoFlask我收到404错误
PS C:\Users\danie\Desktop\nodepythonproject> 节点 nodepython { StatusCodeError: 404 - "\n\n\n\n错误\n\n\n
无法 POST /postdata\n\n\n" 在新的 StatusCodeError (C:\Users\danie\node_modules\request-promise-core\lib\errors.js:32:15) 在 Request.plumbing.callback (C:\Users\danie\node_modules\request-promise-core\lib\plumbing.js:104:33) 在 Request.RP$callback [as _callback] (C:\Users\danie\node_modules\request-promise-core\lib\plumbing.js:46:31) 在 Request.self.callback (C:\Users\danie\node_modules\request\request.js:185:22) 在 emitTwo (events.js:126:13) 在 Request.emit (events.js:214:7) 在请求。 (C:\Users\danie\node_modules\request\request.js:1157:10) 在 emitOne (events.js:116:13) 在 Request.emit (events.js:211:7) 在传入消息。 (C:\Users\danie\node_modules\request\request.js:1079:12) 在 Object.onceWrapper (events.js:313:30) 在 emitNone (events.js:111:20) 在 IncomingMessage.emit (events.js:208:7) 在 endReadableNT (_stream_readable.js:1064:12) 在 _combinedTickCallback (内部/进程/next_tick.js:138:11) 在 process._tickCallback (internal/process/next_tick.js:180:9) 名称:“状态码错误”, 状态码:404, 消息:'404 - "\n\n\n\n错误\n\n\n
无法 POST /postdata\n\n\n"', 错误:'\n\n\n\n错误\n\n\n
无法 POST /postdata\n\n\n', 选项: {方法:'POST', uri: 'http://localhost:3000/postdata', 正文:{ data1:'foo',data2:'bar'}, json:是的, 回调:[功能:RP$回调], 变换:未定义, 简单:真的, 解决完全响应:假, transform2xxOnly: 假 }, 回复: 传入消息 { _可读状态: 可读状态 { 对象模式:假, 高水位:16384, 缓冲区:[对象], 长度:0, 管道:空, 管道数:0, 流动的:真实的, 结束:真的, endEmitted:真, 阅读:错误, 同步:真, 需要可读:假, 发射可读:假, 可读听力:假, 恢复计划:假, 毁坏:假, 默认编码:'utf8', 等待排水:0, 阅读更多:错误, 解码器:空, 编码:空}, 可读:假, 域:空, _事件: {结束:[数组], 关闭:[数组], 数据:[功能], 错误:[功能]}, _eventsCount:4, _maxListeners:未定义, 插座: 插座 { 连接:假, _hadError:假, _句柄:空, _父:空, _host: '本地主机', _可读状态:[对象], 可读:假, 域:空, _events:[对象], _eventsCount:8, _maxListeners:未定义, _writableState:[对象], 可写:假, allowHalfOpen:假, _bytesDispatched: 175, _sockname:空, _pendingData:空, _pendingEncoding: '', 服务器:空, _server:空, 解析器:空, _httpMessage:[对象], _idleNext:空, _idlePrev:空, _idleTimeout:-1, [符号(asyncId)]:22, [符号(字节读取)]:392 }, 联系: 插座 { 连接:假, _hadError:假, _句柄:空, _父:空, _host: '本地主机', _可读状态:[对象], 可读:假, 域:空, _events:[对象], _eventsCount:8, _maxListeners:未定义, _writableState:[对象], 可写:假, allowHalfOpen:假, _bytesDispatched: 175, _sockname:空, _pendingData:空, _pendingEncoding: '', 服务器:空, _server:空, 解析器:空, _httpMessage:[对象], _idleNext:空, _idlePrev:空, _idleTimeout:-1, [符号(asyncId)]:22, [符号(字节读取)]:392 }, httpVersionMajor: 1, httpVersionMinor:1, http版本:'1.1', 完整:真实, 标题: { 'x-powered-by': '快递', 'content-security-policy': 'default-src \'self\'', 'x-content-type-options': 'nosniff', '内容类型': '文本/html;字符集=utf-8', '内容长度':'148', 日期:'格林威治标准时间 2018 年 9 月 21 日星期五 17:36:52', 连接:'关闭'}, 原始标题: ['X-Powered-By', '表示', '内容安全策略', 'default-src \'self\'', 'X-Content-Type-Options', 'nosniff', '内容类型', '文本/html;字符集=utf-8', '内容长度', '148', '日期', '格林威治标准时间 2018 年 9 月 21 日星期五 17:36:52', '联系', '关闭' ], 预告片:{}, rawTrailers: [], 升级:假, 网址:'', 方法:空, 状态码:404, statusMessage: '未找到', 客户: 插座 { 连接:假, _hadError:假, _句柄:空, _父:空, _host: '本地主机', _可读状态:[对象], 可读:假, 域:空, _events:[对象], _eventsCount:8, _maxListeners:未定义, _writableState:[对象], 可写:假, allowHalfOpen:假, _bytesDispatched: 175, _sockname:空, _pendingData:空, _pendingEncoding: '', 服务器:空, _server:空, 解析器:空, _httpMessage:[对象], _idleNext:空, _idlePrev:空, _idleTimeout:-1, [符号(asyncId)]:22, [符号(字节读取)]:392 }, _消费:真的, _转储:假, 要求: 客户请求 { 域:空, _events:[对象], _eventsCount:5, _maxListeners:未定义, 输出: [], 输出编码:[], 输出回调:[], 输出大小:0, 可写:真, _last:是的, 升级:假, 分块编码:假, 应该保持活动:假, useChunkedEncodingByDefault: true, 发送日期:假, _removedConnection:假, _removedContLen:假, _removedTE:假, _contentLength:空, _hasBody:是的, _预告片: '', 完成:真的, _headerSent:真, 套接字:[对象], 连接:[对象], _header: 'POST /postdata HTTP/1.1\r\nhost: localhost:3000\r\naccept: application/json\r\ncontent-type: application/json\r\ncontent-length: 29\r\nConnection: close\ r\n\r\n', _onPendingData:[功能:noopPendingOutput], 代理:[对象], 套接字路径:未定义, 超时:未定义, 方法:'POST', 路径:'/postdata', _结束:真的, 资源:[循环], 中止:未定义, timeoutCb:空, 升级或连接:假, 解析器:空, maxHeadersCount:空, [符号(outHeadersKey)]:[对象]}, 要求: 要求 { 域:空, _events:[对象], _eventsCount:5, _maxListeners:未定义, 方法:'POST', uri:[对象], 正文:'{"data1":"foo","data2":"bar"}', 可读:真实, 可写:真, 显式方法:真, _qs:[对象], _auth:[对象], _oauth:[对象], _multipart:[对象], _redirect:[对象], _tunnel:[对象], _rp_resolve:[功能], _rp_reject:[功能], _rp_promise:[对象], _rp_callbackOrig:未定义, 回调:[功能], _rp_options:[对象], 标题:[对象], setHeader: [功能], hasHeader: [功能], getHeader: [功能], removeHeader: [功能], 本地地址:未定义, 水池: {}, 目的地:[], __isRequestRequest:真, _callback:[功能:RP$回调], 代理:空, 隧道:假, 设置主机:真, originalCookieHeader: 未定义, _disableCookies:真, _jar:未定义, 端口:'3000', 主机:'本地主机', 路径:'/postdata', _json:是的, httpModule:[对象], 代理类:[对象], 代理:[对象], _开始:是的, href: 'http://localhost:3000/postdata', 请求:[对象], 提示:是的, 回应:[通函], originalHost: 'localhost:3000', originalHostHeaderName: '主机', 响应内容:[循环], _destdata:真, _结束:真的, _callbackCalled: true }, toJSON:[函数:responseToJSON], 无壳:无壳{字典:[对象]}, 阅读:[功能], 正文:'\n\n\n\n错误\n\n\n
无法 POST /postdata\n\n\n' } }
【问题讨论】:
-
如果您导航到 '/' 端点,它是否会按预期返回“Flask server”?
标签: python node.js flask http-status-code-404