@AlmazKayum

Почему в flask request.json выдает null?

доброго времени.
Делаю апи запрос POST. Собственно код.
from flask import Flask
from flask import jsonify, request
app = Flask(__name__)

@app.route('/api/func/<int:id>/', methods=['POST'])
def func(id):
    data = request.json
    return jsonify(data)

app.run(...)

Веб сервер Flask работает исправно. Get запросы принимает норм.
При отправке POST запроса с data = {'data': 'some_data'}
выдает data = None
Делаю запрос CURL
curl -i -X POST -d "{'data': 'some_data'}"  http://IP:PORT/api/func/<id>/

выдает такой ответ
5fba95811011d473045941.png
где null это как раз возвращенная data.
Он же должен вернуть {'data': 'some_data'}
Что я делаю не так?

UPD. с PUT запросом та же история, request.json пустой.
  • Вопрос задан
  • 329 просмотров
Решения вопроса 1
SoreMix
@SoreMix
yellow
Все ок, проблема в самом запросе cURL

Установите content-type на JSON
-H "Content-Type: application/json"

Плюс, как мне кажется, не эксперт курла, но лучше JSON будет обернуть в одинарную кавычку, а все данные внутри заворачивать в двойную, так как одинарная кавычка не является корректной в JSON.

По идее, на линуксе так должно работать.
curl -i -X POST -d '{"data": "some_data"}' -H "Content-Type: application/json" http://127.0.0.1:5000/api/func/1/

Windows будет ругаться на такое решение из-за кавычек, их нужно будет экранировать

Если курл не принципиален, можно использовать Postman, имхо, будет удобнее
В postman выглядит как-то так
5fba9849174aa265291377.jpeg
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы