我正在使用Angular 6和ASP.NET Core WebAPI进行一个简单的教程项目。
我不太确定自己缺少什么,但是我的POST调用不起作用。确切地说,一切都可以与Web服务进行通信,但是当C#类型不允许使用null时,传递到我的controller方法参数中的对象的所有属性都设置为null或默认值。
这是我的打字稿电话:
createRequest(request: PrintRequestDto): Observable<PrintRequestDto> {
const actionUrl = this.apiBaseUrl + 'CreateRequest';
return this.http.post<PrintRequestDto>(actionUrl, JSON.stringify(request)); }
这是我的服务器端C#方法:
[Authorize]
[HttpPost]
[Route("CreateRequest")]
public PrintRequestDto CreateRequest(PrintRequestDto request)
{
return _printServiceManager.CreateRequest(request);
}
我已经在SO Question处找到了这个问题,但是在标头中添加内容类型规范无济于事。只是让您知道,我使用了Angular中内置的HttpInterceptor在所有请求的标头中注入JWT和内容类型信息。
我还希望更好地了解涉及这些内容的http功能,因此,如果您有要提供的一些完整文档的链接,那就太棒了。
答案 0 :(得分:4)
您需要在[FromBody]
上添加PrintRequestDto request
[Authorize]
[HttpPost]
[Route("CreateRequest")]
public PrintRequestDto CreateRequest([FromBody]PrintRequestDto request)
{
return _printServiceManager.CreateRequest(request);
}