#java #angular #spring #post #rest
#java #угловой #spring #Публикация #отдых
Вопрос:
получение ошибки кода состояния 500 при использовании следующего запроса
createPost(postPayload: CreatePostPayload): Observable<any> {
return this.http.post('http://localhost:8080/api/posts/', postPayload);
}
запрос отлично работает на postman.
Ответ №1:
Попробуйте использовать HttpClient. Проверьте, что вы разместили () тело и заголовки
Ответ №2:
createPost(postPayload: CreatePostPayload): Observable<any> {
const headers = new HttpHeaders().set('Content-Type', 'application/json');
return this.http.post('http://localhost:8080/api/posts', postPayload, {
observe: 'response',
headers: headers
});
}
Комментарии:
1. когда я попробовал ваш код, ошибка переключилась с 500 на 404
2. Я думаю, что я нашел реальную проблему в серверной части, но я не знаю, как это исправить, похоже, по какой-то причине возникает ошибка, при которой текущий пользователь получает назначение post.
java.base/java.lang.String cannot be cast to org.springframework.security.core.userdetails.User
Ответ №3:
Итак, я, наконец, смог решить эту проблему. Дело в том, что токен аутентификации не был включен в заголовок запроса post, поэтому он отлично работает на postman. Благодаря Муругану и Ахмеду, которые намекнули на проверку заголовков, мне удалось решить это следующим образом
createPost(postPayload: CreatePostPayload): Observable<any> {
const headers = new HttpHeaders().set("Authorization", this.localStorage.retrieve('authenticationToken'));
return this.http.post('http://localhost:8080/api/posts/', postPayload, {
observe: 'response',
headers: headers
});
}