【发布时间】:2016-03-02 16:33:21
【问题描述】:
我目前正在使用 Angular 2 和 ASP.NET 制作一个小原型。
根据 angular.io 文档 (https://angular.io/docs/ts/latest/guide/server-communication.html) :“我们不应该期望 json() 直接返回英雄数组。我们调用的服务器总是将 JSON 结果包装成一个带有数据属性的对象。我们有解开它以获得英雄。这是传统的 web api 行为,由安全问题驱动。
我在 ASP.NET 中构建了一个 APIController 来获取 JSON 格式的英雄列表。这是我的代码:
[DataContract]
public class Hero
{
[DataMember]
public string id { get; set; }
[DataMember]
public string name { get; set; }
public Hero(string id, string name)
{
this.id= id;
this.name = name;
}
}
public class HeroesController : ApiController
{
// GET api/<controller>
public IEnumerable<Hero> Get()
{
return new Hero[] { new Hero("1", "TEST HERO #1"),
new Hero("2", "TEST HERO #2")};
}
}
但奇怪的是,我的 ApiController 正在返回这个 JSON 响应: [{"id":"1","name":"TEST HERO #1"}, {"id":"2","name":"TEST HERO #2"}]
而不是类似的东西: {"data": [{"id":"1","name":"TEST HERO #1"}, {"id":"2","name":"TEST HERO #2"}]}
您知道为什么 ASP.NET Web api 不遵循此安全建议吗?还是我做错了什么?
非常感谢!
【问题讨论】:
-
WebAPI 让您可以控制整个响应消息,让您可以控制是否实施该模式。这完全取决于您。
标签: asp.net angularjs asp.net-apicontroller