HttpClient.post выполнен успешно, но Rest API не получает данные

#angular #typescript #http-post #rest

Вопрос:

Я пытаюсь сохранить данные из своего приложения angular в базе данных. Я использую HttpClient для отправки данных в RestAPI. Он отправляет запрос, но API не получает данные и возвращает response code:500

Я попытался записать данные в консоль, и я могу видеть данные, но по какой-то причине RestAPI их не получает.

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

Ответ №1:

Вам нужно подписаться после функции публикации.

 this.http.post(`${this.Baseurl}/insertPost`, newPost, this.httpheader).subscribe(
      res => {
         // do something
      },
      err => {
        // do something
      }
);
 

Комментарии:

1. Я вызываю createPost() другой компонент this.createpost.createPost(newPost).subscribe( (response:any)=>{ console.log(response); }, (error:any)=>{ console.log(error); }) , вот вызов функции

Ответ №2:

  • Если вы ничего не регистрируете, это потому, что вам нужно позвонить .subscribe() или .toPromise() .
  • Если вам удастся что-то зарегистрировать, но ответ будет null и вернет код состояния 500, то API потерпит крах (произошла ошибка во время выполнения), и ваш запрос, скорее всего, будет отменен

Комментарии:

1. Я позвонил .subsribe( ) и зарегистрировал ответ и ошибку. И нет, API не выходит из строя. Я попробовал отправить запрос с почтальоном, и это работает просто отлично, но я не делаю тот же запрос из углового приложения

2. не могли бы вы поделиться запросом, который отправляется на сервер? Вы можете проверить это, если откроете инструменты разработчика своего браузера и проверите вкладки «Сеть» > «Запрос» .

3. Также убедитесь, что ваш объект имеет ту же форму, что и ваш внутренний API

4. Это скриншоты с вкладки «Запрос «, Извините, я не знаю, как еще поделиться. И да, я проверил полезную нагрузку запроса, и она имеет правильную форму.

5. Можете ли вы поделиться тем, что находится на вкладке «Ответ»? На скриншоте показаны только «Заголовки». В любом случае я вижу 500, поэтому запрос выполняется, но ваш сервер выходит из строя, и, следовательно, никаких побочных эффектов для базы данных

Ответ №3:

Как упоминал @YuTing, вам нужно подписаться после вызова метода post.

 this.http.post(`${this.Baseurl}/insertPost`, newPost, this.httpheader)
.subscribe((response: any) =>{

//Here response is the JSON response sent by the server when the API call made.
      if(response){

         //do something

      }
});