#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
}
});