在我的项目中,CloudMiddleware有一个与API,PayPal,Twilio等API集成的服务。我有SOAP,REST和AJAX请求的端点,我也想使用ODATA灵活性,因为请求是通过HTTP使用url本身。这可能吗?
答案 0 :(得分:1)
假设您有一个服务控制器。每个服务都是具有Id和Description的类的实例。服务类具有Id和Description属性。
public class ServiceController : ApiController
{
// GET api/service
public IEnumerable<Service> Get()
{
return new Service[]
{
new Service { Id = 1, Description = "This is my service 1." },
new Service {Id = 2, Description = "This is my service 2."},
new Service {Id = 3, Description = "This is my service 3."}
};
}
// GET api/service/5
public Service Get(int id)
{
return null;
}
// POST api/service
public void Post([FromBody]string value)
{
}
}
public class Service
{
public int Id { get; set; }
public string Description { get; set; }
}
为了通过OData使用控制器的服务,你必须在方法“Get”中使用属性[Queryable]并将返回类型更改为IQueryable,并且所有准备就绪!!!!!,如下所示:
public class ServiceController : ApiController
{
// GET api/service
[Queryable(ResultLimit = 10)]
public IQueryable<Service> Get()
{
return new Service[]
{
new Service { Id = 1, Description = "This is my service 1." },
new Service {Id = 2, Description = "This is my service 2."},
new Service {Id = 3, Description = "This is my service 3."}
}.AsQueryable();
}
// GET api/service/5
public Service Get(int id)
{
return null;
}
// POST api/service
public void Post([FromBody]string value)
{
}
}
属性 Queryable 具有属性 ResultLimit ,它用于表示可以保存结果的最大数量的服务实例。它还具有属性 LambdaNestingLimit , HandleNullPropagation 和 EnsureStableOrdering 。
对/ api / service的请求?$ top = 2返回一个Json响应:
{{“Id”:“1”,“说明”:“这是我的服务1.”},{“Id”:“2”,“说明”:“这是我的服务2.”}}
答案 1 :(得分:0)
是的,您可以使用ASP.NET Web API或WCF数据服务在ASP.NET MVC项目中创建OData端点。前者为您提供了更多的控制和灵活性来实现端点。