我正在运行具有以下操作的 REST API 服务:
[HttpPost]
public FooResponse DoFoo(FooRequest request)
//public FooResponse DoFoo([FromBody] FooRequest request)
{
return null;
}
我的要求:
public class FooRequest
{
public string FooId;
}
我有一个 Angular 客户端,它正在进行此调用:
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;
}
当我从 PostMan 进行调用时,会填充 FooId,当我从 Angular 调用它时,会命中端点,但参数始终为 null。当我查看控制台日志时,参数就在那里。
我已经尝试过this解决方案,但它没有解决我的问题。
我错过了什么?
最佳答案
您应该在方法中添加 [FromBody] 属性。
[HttpPost]
public FooResponse DoFoo([FromBody] FooRequest request)
{
return null;
}
当您向 api 发送请求时,您的请求正文必须为 json 格式。
var fooRequest = { FooId : 1};
const result = this.httpClient.post<fooItem>(url, JSON.stringify(fooRequest) ).toPromise();
我没有尝试,我想它会起作用。
关于c# - 无法将参数传递给API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58956838/