【发布时间】:2019-11-20 22:47:22
【问题描述】:
我正在运行具有此操作的 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 调用它时,会命中端点,但参数始终为空。当我查看控制台日志时,参数就在那里。
我尝试了this 解决方案,但它没有解决我的问题。
我错过了什么?
【问题讨论】:
-
尝试将 set() 远离实例化 ` const params = new HttpParams(); params.set('FooId', fooId);`
-
@Leandro,同样的结果。
-
您不想在您的情况下使用
HttpParams,您正在寻找FooRequest,因此构建类似的对象并将其传入假设它只是Id,只需传入@ 987654328@ 并在您的操作中使用[FromBody] -
您应该在浏览器的开发工具、网络选项卡中查看您的请求的详细信息。可以查看你的参数是否发送。
-
params不适用于有效载荷。用于url的参数
标签: c# angular typescript rest