没有[FromBody]的Angular 2 HTTP发布到Web API

时间:2016-02-29 16:50:10

标签: asp.net-web-api asp.net-web-api2 angular asp.net-core restangular

我在下面有一个示例Angular 2代码。

 this.headers = new Headers({ 'Content-Type': 'application/json' });
 this.options = new RequestOptions({ headers: this.headers });
 this.http.post('/api/todo/create', JSON.stringify(todo), this.options);

我还有一个API动作,如下所示(ASP.NET Core)

[HttpPost]
[Route("create")]
public IActionResult Create([FromBody] Todo todo)
{
    return this.Ok();
}

此代码有效,但我不习惯在参数中看到[FromBody]属性。我知道对于Post请求,MVC从正文中读取它。但是,我之前在AngularJS中使用了Restangular,并且参数对象被发送到没有[FromBody]属性的API。

有没有办法在不使用[FromBody]属性或读取请求内容然后将其反序列化为对象的情况下将对象传递给API操作?

1 个答案:

答案 0 :(得分:1)

我认为使用POST方法的有效负载是将数据发送到服务器的方法。您可以选择所需的内容类型(JSON,url编码形式,......)。

也就是说,Angular2 HTTP支持是低级别的。我的意思是没有用于REST的高级API。你需要自己设置标题,选择你想要使用的HTTP方法......我在Angular2中找不到类似Restangular的东西。

此链接可以帮助您: