Как обработать запрос на публикацию в формате json для собственного ноутбука на python через django или flask

#python #django #http #flask #post

Вопрос:

Я настроил http-веб-соединение в облаке веб-страниц thethingstack.thethings.сеть, которая выполняет запрос post на настроенную конечную точку (мой ноутбук) следующим образом:

 http://xxx.ngrok.io -> http://localhost:80
For uplink message: http://localhost:80/uplink-message
For join ack: http://localhost:80/join-accept
 

Используя ngrok.exe http 80 я также могу видеть, что я получаю запросы post в своей командной строке:

 POST /uplink-enabled           502 Bad Gateway                                                                          POST /uplink-enabled           502 Bad Gateway                                                                          POST /uplink-enabled           502 Bad Gateway 
 

Однако я не могу получать данные в формате json, следуя онлайн-учебникам:
введите описание ссылки здесь
введите описание ссылки здесь
Есть ли пример кода, который непрерывно прослушивает http-порт и обрабатывает запросы post?

ИЗМЕНИТЬ: Мой код колбы выглядит следующим образом:

 # import main Flask class and request object
from flask import Flask, request

# create the Flask app
app = Flask(__name__)

@app.route('/uplink-enabled')
def query_example():
    return 'Query String Example'

if __name__ == '__main__':
    # run app in debug mode on port 5000
    app.run(debug=True, port=80)
 

Я также могу видеть входящие почтовые запросы, но получаю сообщение об ошибке:

  • Режим отладки: включен * Перезапуск с помощью stat * Отладчик активен! * PIN-код отладчика: 852-174-427 * Работает на http://127.0.0.1:80/ (Нажмите CTRL C, чтобы выйти) 127.0.0.1 — — [18/Авг/2021 11:12:46] «HTTP /1.1 с поддержкой POST/uplink» 405 —

мой интерфейс ngrok выглядит следующим образом:

Статус сеанса онлайн
-сеанс истекает через 1 час 19 минут
Версия 2.3.40
Регион Веб-интерфейс Соединенных Штатов (США)
http://127.0.0.1:4040
Пересылка http://xxx.ngrok.io -> http://localhost:80 Пересылка
https://xxx.ngrok.io -> http://localhost:80

Комментарии:

1. опубликуйте код приложения flask.

2. @AmithLakkakula готово

Ответ №1:

 @app.route('/uplink-enabled', methods= ['POST', 'GET'])
def query_example():
    return 'Query String Example'

 

Это обработает ошибку 405.

Ответ №2:

Ваш dev-сервер возвращает HTTP 405 (Метод не разрешен), поскольку определение маршрута должно явно определять метод:

 @app.route('/uplink-enabled', methods=['POST'])