Правильный способ заставить API извлекать 'POST' с помощью Async / Await - PullRequest
0 голосов
/ 26 апреля 2018

Я работаю над проектом, требующим от меня запросов к API. Какова правильная форма для отправки запроса POST с помощью Async / Await?

В качестве примера, вот моя выборка, чтобы получить список всех устройств. Как бы я изменил этот запрос на POST для создания нового устройства? Я понимаю, что мне нужно добавить заголовок с телом данных.

getDevices = async () => {
  const location = window.location.hostname;
  const response = await fetch(
    `http://${location}:9000/api/sensors/`
  );
  const data = await response.json();
  if (response.status !== 200) throw Error(data.message);
  return data;
};

Ответы [ 3 ]

0 голосов
/ 26 апреля 2018

На самом деле ваш код может быть улучшен следующим образом:

Чтобы сделать сообщение, просто добавьте метод в настройках вызова выборки.

getDevices = async () => {
    const location = window.location.hostname;
    const settings = {
        method: 'POST',
        headers: {
            Accept: 'application/json',
            'Content-Type': 'application/json',
        }
    };

    const data = await fetch(`http://${location}:9000/api/sensors/`, settings)
        .then(response => response.json())
        .then(json => {
            return json;
        })
        .catch(e => {
            return e
        });

    return data;


}
0 голосов
/ 03 июля 2019

Не забудьте объединить async/await и then, вот пример:

const addDevice = async (device) => {
  const { hostname: location } = window.location;
  const settings = {
    method: 'POST',
    body: JSON.stringify(device),
    headers: {
      'Accept': 'application/json',
      'Content-Type': 'application/json',
    }
  }

  const response = await fetch(`http://${location}:9000/api/sensors/`, settings);
  if (!response.ok) throw Error(response.message);

  try {
    const data = await response.json();
    return data;
  } catch (err) {
    throw err;
  }
};
0 голосов
/ 26 апреля 2018

Вот пример с конфигурацией:

try {
    const config = {
        method: 'POST',
        headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json',
        },
        body: JSON.stringify(data)
    }
    const response = await fetch(url, config)
    //const json = await response.json()
    if (response.ok) {
        //return json
        return response
    } else {
        //
    }
} catch (error) {
        //
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...