example entre ejemplo diferencia angular

entre - httpclient map angular 5



Solicitud POST de HttpClient usando x-www-form-urlencoded (2)

x-www-form-urlencoded realizar una solicitud POST con el encabezado de tipo de contenido x-www-form-urlencoded siguiente manera:

login(username, password): Observable<any> { return this.http.post(''/login'', { username: username, password: password }, { headers: new HttpHeaders() .set(''Content-Type'', ''x-www-form-urlencoded'') } );

Desafortunadamente mi API dice que envié un nombre de usuario y contraseña vacíos.

así que decidí hacer una solicitud de cartero a mi punto final de inicio de sesión y ver de dónde viene el problema, y ​​la solicitud del cartero devolvió el nombre de usuario y la contraseña.

¿Cómo es que cuando publico desde el cartero mi API devuelve mi nombre de usuario y contraseña y cuando publico desde mi aplicación Angular mi API devuelve valores vacíos? ¿Hay algo que me falta?


Estás publicando datos JSON en la API en lugar de datos de formulario. El siguiente fragmento debería funcionar.

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


Usted puede hacer una solicitud de publicación de la siguiente manera.

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

Después de eso tienes que hacer la suscripción.