c# - No se puede pasar parámetro a la API
Estoy ejecutando un servicio REST API que tiene esta acción:
[HttpPost]
public FooResponse DoFoo(FooRequest request)
//public FooResponse DoFoo([FromBody] FooRequest request)
{
return null;
}
Mi solicitud:
public class FooRequest
{
public string FooId;
}
Tengo un cliente Angular, que está haciendo esta llamada:
startFoo(fooId: string)
{
const url = `${this.baseUrl}StartFoo`;
const params = new HttpParams()
.set('FooId', fooId);
console.log(`params : ${params}`);
const result = this.httpClient.post<fooItem>(url, {params}).toPromise();
return result;
}
Cuando hago la llamada desde PostMan, el FooId se llena; cuando la llamo desde Angular, se alcanza el endpoint, pero el parámetro siempre es nulo. Cuando miro en el registro de la consola, el parámetro está allí.
He probado esta solución, pero no resolvió mi problema.
¿Qué me estoy perdiendo?
Respuesta #1
Deberías agregar el atributo [FromBody] en el método.
[HttpPost]
public FooResponse DoFoo([FromBody] FooRequest request)
{
return null;
}
Mientras envías la solicitud a la API, el cuerpo de tu solicitud debe estar en formato JSON.
var fooRequest = { FooId : 1};
const result = this.httpClient.post<fooItem>(url, JSON.stringify(fooRequest) ).toPromise();
No lo intenté, supongo que funcionará.
