hekkaaa
@hekkaaa
Junior DevOps

Как сделать правильный простой GET\POST запрос на JS с передачей заголовка либо иных данных?

Делаю запрос GET\POST запрос с python на FLASK

r = requests.post('http://127.0.0.1:5001/requestajaxtest', data = {'key':'value'})  
print(r.url)


получаю ответ на сервере нормальный на стороне сервера с помощью print(request.form.get)

127.0.0.1 - - [17/May/2021 23:29:08] "POST /requestajaxtest HTTP/1.1" 200 -
POST: POST
ImmutableMultiDict([])
<bound method TypeConversionDict.get of ImmutableMultiDict([('key', 'value')])>


Если делаю запрос с помощью JS (выбирая одну из функций ниже):
async function alerttest1() {
    let response = fetch('http://127.0.0.1:5001/requestajaxtest', {
  headers: {
    Authentication: 'secret'
  }
});
    };


async function alerttest2() {
   let user = {
  name: 'John',
  surname: 'Smith'
};

let response = await fetch('http://127.0.0.1:5001/requestajaxtest', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json;charset=utf-8'
  },
  body: JSON.stringify(user)
});

let result = await response.json();
alert(result.message);
 };


ИТОГ : ни чего вообще не передается. Просто пусто на стороне сервера.
request.form.get

POST: GET
ImmutableMultiDict([])
<bound method TypeConversionDict.get of ImmutableMultiDict([])>


Либо я запросы на JS не правильно пишу либо неверно читаю с js.
  • Вопрос задан
  • 114 просмотров
Решения вопроса 1
SoreMix
@SoreMix
yellow
upd: Если отправляете JSON - их нужно получать чуть по другому, в request.form их не будет, он не принимает JSON данные. В случае ваших запросов через python, вы передавали обычный application/x-www-form-urlencoded, для которого вариант с request.form подходит. Когда вы отправляете запросы через JS скрипт - вы отправляете их уже в форме application/json, который можно получить через request.json
Хедеры тоже банально достаются через request.headers.get('Authentication')

не понял сразу вопрос
В консоли ошибок нет? Не вижу вызова JS функций, вы их вызываете?
Ну и хотелось бы знать, есть ли во вкладке Network браузера какие-то запросы?
Так же напомню, что фласк по умолчанию работает на порте 5000, у вас же 5001. Надеюсь и фласк вы запустили на нем
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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