我为这个问题挣扎了很长时间。
我有一个客户端应用程序集与角6和WebApi创建的ASPCore2.1。
对于我的帖子请求,我做了这样的事情。
const params = {
TestData: newActions,
ExportAndExecute: true
};
this.httpClient.post('/tests/export', params, {headers: {}}).subscribe((result) => {
console.log(result);
});
其中httpClient.post方法是:
post(route: string, params: any, headers: object) {
return new Observable<any>(subscriber => {
this.httpClient.post<any>(this.baseUrl + route, params, headers).subscribe((result) => {
subscriber.next(result);
}, (error: Response) => {
this.handleRequestError(error);
});
});
}
我的API控制器操作如下所示:
[HttpPost]
[Route("/api/[controller]/export")]
[Authorize(AuthenticationSchemes = "JwtBearer")]
public async Task<HttpStatusCode> ExportTest( [FromBody] ExportTestModel model)
{
var result = HttpStatusCode.MisdirectedRequest;
}
模特儿班是:
public class ExportTestModel
{
public List<BsonDocument> TestData { get; set; }
public bool ExportAndExecute { get; set; }
}
我不知道为什么每次从客户端发送数据时,控制器操作中的数据都是空的。我试着把它作为一个字符串化的对象发送,在控制器中以object
或JObject
的形式接收,但是没有任何东西能像预期的那样工作。
我可以补充说,如果我以JObject
的形式接收数据,我可以正确地看到它,但我不想这样做。
我觉得自己很蠢,但也许有人能指出我的做法有什么不对。
发布于 2018-07-04 12:17:30
看看您的示例代码,我想到了两个选项:
this.httpClient.post()
调用中的第三个参数即可。
This.httpClient.post(/test/export,params).subscribe(结果=> {console.log(结果);});
您可以通过检查web开发人员工具栏中的网络流量来验证此标头是否设置。params
对象有一个TestData
和一个ExportAndExecute
,它们都是pascal大小写的。这可能是模型粘合剂是敏感的情况。发布于 2018-07-04 13:06:52
这适用于我使用角6 HttpClient和Asp.Net Core2.0或2.1
在您的控制器中:
const params = {
TestData: newActions,
ExportAndExecute: true
};
this.dataService.postData(params).subscribe(
data => {
console.log('post OK !');
},
error => {
console.log('post error !');
}
);
为您服务:
constructor( private http: HttpClient ) {}
const headers = new HttpHeaders()
.set('Content-Type', 'application/json')
.set('Accept', 'application/json')
const url = 'http://localhost:5000/api/'
postData( params ) {
return this.http.post(
url + 'grupos',
JSON.stringify(params),
{ headers: headers }
);
}
https://stackoverflow.com/questions/51173290
复制相似问题