#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'])