2016-09-20 2 views
2

Я использую реакцию, чтобы отправить форму на флэнд-бэкэнд. Данные представлены в json, это пример.Колба JSON почтовый запрос не работает

add_new_user(e){ 
    e.preventDefault() 
    var user_details = {} 
    user_details['fname'] = this.state.first_name 
    user_details['last_name'] = this.state.last_name 

var post_request = new Request('http://127.0.0.1:5000/add_new_user', { 
    method: 'post', 
    body: JSON.stringify(user_details) 
}) 

fetch(post_request).then(function(response){ 
    console.log(response) 
}) 

На моем бэкэнда код выглядит так,

@app.route('/add_new_user', methods=['POST']) 
def add_user(): 
    content = request.json() 
    print content 
    return 'user added' 

Однако содержимое переменной равно нулю, и поэтому печатные данные на экране нет. Как я могу это исправить? Что я делаю не так. Спасибо

ответ

0

Возможно, вам потребуется установить тип содержимого запроса запроса application/json. В противном случае это будет None.

+0

добавил '' 'content-type: application/json''', но похоже, что это не работает, почему? – rksh

0

Пробег: request.get_json(force=True). Рекомендуется использовать get_json() вместо метода json(). force=True позволяет игнорировать требование типа контента.

+0

Спасибо, '' 'force = True''', похоже, работает, но когда я добавляю' '' content-type: application/json''' без force = True, он по-прежнему не работает. Почему это? – rksh

+0

@rksh Убедитесь, что вы правильно настроили тип содержимого в клиенте React. Вероятно, это проблема кеширования. Также попробуйте выполнить запрос, используя, например, свернуться и увидеть результат. 'curl -H 'Content-Type: application/json" -X POST -d' {"fname": "некоторое имя", "last_name": "some last name"} 'http://127.0.0.1:5000/add_new_user' – Nurjan

+0

Привет, извините, я правильно настроил тип контента, однако мне пришлось установить расширение фляжки-корса, чтобы позволить cors для его правильной работы. Спасибо – rksh

Смежные вопросы