Как отправить данные json в серверную часть flask с помощью node-red

#python #flask #node-red

#python #flask #узел-красный

Вопрос:

Я пытаюсь отправить некоторый вывод из node-red в качестве объекта JSON на серверную часть, использующую Flask. В серверной части моя цель — преобразовать данные JSON в .dot формат и сохранить файл локально. Я только начал использовать node-red, и я не уверен, как я могу этого добиться? Серверная часть должна быть на python.

введите описание изображения здесь

Код python с использованием Flask:

 from flask import Flask,request
app = Flask(__name__)

@app.route('/',methods=['POST','GET'])
def hello_world():
    print (request.is_json)
    content = request.get_json()
    print (content)
    return 'JSON posted'
 

Ошибка на красной консоли узла, которую я получаю, такова

 15 Apr 15:39:38 - [info] [debug:7bffeac1.688574]
{ _msgid: 'af3f4f9d.7072d', topic: '', payload: 'Invalid Date' }
15 Apr 15:45:13 - [info] [debug:7bffeac1.688574]
{ _msgid: 'e827f152.f9194', topic: '', payload: 'Invalid Date' }
15 Apr 15:48:55 - [info] [debug:7bffeac1.688574]
{ _msgid: '53e5ee2d.3b599', topic: '', payload: 'Invalid Date' }
 

Ошибка в терминале python:

127.0.0.1 — — [15 / Apr / 2019 15:57:42] «GET / HTTP / 1.1» 500 —

Нет ложного

Ответ №1:

Давайте разберем проблему пополам.

Возьмите первые 2 узла в потоке.

Inject Узел установлен в режим временной метки в JSON узле.

введите описание изображения здесь

Это выводит строку:

 15/04/2019, 08:46:01  node: e5ffc8f6.f177a8
msg.payload : string[13]
"1555314361418"
 

Это не объект JSON (предыдущие версии Node-RED фактически выдают ошибку, если попробовать это, а не просто преобразовать входное число в строку). JSON Узел не создаст структуру JSON, если во входных данных нет строкового представления.

Если вы хотите внедрить объект JSON в свой HTTP-Request узел, вы должны изменить узел ввода, чтобы фактически внедрить объект JSON и удалить узел JSON.

введите описание изображения здесь