Запрос POST HttpClient с использованием x-www-form-urlencoded
Я пытаюсь сделать запрос POST с заголовком заголовка x-www-form-urlencoded
следующим образом:
login(username, password): Observable<any> {
return this.http.post('/login', {
username: username,
password: password
},
{
headers: new HttpHeaders()
.set('Content-Type', 'x-www-form-urlencoded')
}
);
К сожалению, мой API говорит, что я отправил пустое имя пользователя и пароль.
поэтому я решил сделать запрос почтальона моей конечной точке входа и посмотреть, откуда возникла эта проблема, и запрос почтальона возвратил имя пользователя и пароль.
Как получается, что когда я отправляю почту из почтового ящика, мой API возвращает мое имя пользователя и пароль, а когда я отправляю сообщение из моего приложения Angular, мой API возвращает пустые значения? Есть ли что-то, что мне не хватает?
Ответы
Ответ 1
Вы отправляете данные JSON в API вместо данных формы.
Ниже приведен фрагмент ниже.
login(username, password): Observable<any> {
const body = new HttpParams()
.set('username', username)
.set('password', password);
return this.http.post('/login',
body.toString(),
{
headers: new HttpHeaders()
.set('Content-Type', 'application/x-www-form-urlencoded')
}
);
}
Ответ 2
Вы можете сделать почтовый запрос, как показано ниже.
login(email:string, password:string):Observable<User>{
let headers = new HttpHeaders();
headers = headers.set('Content-Type', 'application/x-www-form-urlencoded')
let params = new HttpParams().set('user', JSON.stringify({email: email,password:password}));
return this.http.post<User>(`${MEAT_API_AUX}/login`,
{},{headers: headers,params:params})
.do(user => this.user = user);
}
после этого вам нужно подписаться.