api控制器回复为odata

时间:2016-02-03 09:23:56

标签: api rest asp.net-web-api odata

我有一个web api控制器,但我需要用odata url格式调用一些动作。 这是我的api控制器

public class ticketsController : ApiController
{
    [EnableQuery]
    public HttpResponseMessage Get(ODataQueryOptions<ticket> queryOptions)
    {
        List<ticket> tL = new List<ticket>();
        tL.Add(new ticket() { id = 1 });
        tL.Add(new ticket() { id = 2 });
        tL.Add(new ticket() { id = 3 });
        return Request.CreateResponse(HttpStatusCode.OK, tL.AsQueryable());
        return tL.AsQueryable();
    }
}

我的获取操作回复为

<ArrayOfticket xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/TestODataApi.Models">
  <ticket>
    <id>1</id>
    <name i:nil="true"/>
    <surname i:nil="true"/>
  </ticket>
  <ticket>
    <id>2</id>
    <name i:nil="true"/>
    <surname i:nil="true"/>
  </ticket>
  <ticket>
    <id>3</id>
    <name i:nil="true"/>
    <surname i:nil="true"/>
  </ticket>
</ArrayOfticket>

但是我需要一个OData响应,比如这个

{
 "@odata.context":"http://127.0.0.1/testodataapi/api/$metadata#tickets","value":[
    {
      "id":1,"name":null,"surname":null
    },{
      "id":2,"name":null,"surname":null
    },{
      "id":3,"name":null,"surname":null
    }
  ]
}

是否有可能改变对odata响应的响应? 我是否需要一个消息处理程序来拦截调用? 非常感谢

0 个答案:

没有答案