Fetch () API в реагировать родной не удалось - "Необработанное отклонение обещания" - PullRequest
0 голосов
/ 04 февраля 2019

Я пытаюсь использовать API Fetch в реагировать нативно, но у меня возникли некоторые проблемы.Всякий раз, когда я пытаюсь выполнить POST, я получаю сообщение об ошибке «Необработанное отклонение обещания», в котором говорится, что тело не разрешено для запросов GET или HEAD.

Метод GET работает отлично, он работает только с POST.

Есть идеи?

submit_task() {
    this.setModalVisible(!this.state.modalVisible);
    const task = {
        text: this.state.content,
        date: this.state.date
    }
    console.log(task);

    const API_URL = 'http://localhost:5000/tasks';
    fetch(API_URL, {
        methood: 'POST',
        body: JSON.stringify(task),
        headers: {
            'Content-Type': 'application-json',
        }
    })
}

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Эта ошибка из-за того, что вы не обработали свое исключение при использовании вызова API .catch вот так

submit_task() {
    this.setModalVisible(!this.state.modalVisible);
    const task = {
        text: this.state.content,
        date: this.state.date
    }
    console.log(task);

    const API_URL = 'http://localhost:5000/tasks';
    fetch(API_URL, {
        methood: 'POST',
        body: JSON.stringify(task),
        headers: {
            'Content-Type': 'application-json',
        }
    })
.catch(error => {
      console.log('found error', error)
    });
    }

Или сделайте свой вызов API внутри try и используйте функцию catch для обработки исключения или ошибки.

  try {
    submit_task() {
    this.setModalVisible(!this.state.modalVisible);
    const task = {
        text: this.state.content,
        date: this.state.date
    }
    console.log(task);

    const API_URL = 'http://localhost:5000/tasks';
    fetch(API_URL, {
        methood: 'POST',
        body: JSON.stringify(task),
        headers: {
            'Content-Type': 'application-json',
        }
    })
}
}
  catch(e){
   console.log('found error', error)
}
0 голосов
/ 04 февраля 2019

В опциях извлечения есть опечатка methood должно быть method.Отдельно к этому вопросу рекомендуется catch ошибок от Promises, что-то вроде:

submit_task() {
    this.setModalVisible(!this.state.modalVisible);

    const task = {
        text: this.state.content,
        date: this.state.date
    }

    const API_URL = 'http://localhost:5000/tasks';
    fetch(API_URL, {
        method: 'POST',
        body: JSON.stringify(task),
        headers: {
            'Content-Type': 'application-json',
        }
    }).catch(error => {
      // Maybe present some error/failure UI to the user here
    });
}
...