如何使用OData WebAPI操作

时间:2015-12-04 18:57:08

标签: odata asp.net-web-api2

我想知道如何使用ODataWebApi Action返回导航属性。

示例:http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/odata-routing-conventions

在上面的链接中,他们提到了示例:

POST / entityset(key)/ cast / action / Products(1)/Models.Book/CheckOut

Checkout是行动的地方。假设此URL返回具有导航属性的Book对象。

想象一下下面的图书结构:

书   - 字符串名称   - 列出页面

页    - 字符串名称

页面将被标记为导航属性。

在我的情况下,每当我在API上触发Post调用时我都会得到

书 - 字符串名称

并且页面被遗漏了。

以下示例是上述内容的修改示例。基本上是一个api,可以检查一系列书籍。

当我点击网址时:http://localhost:4448/api/v1/Books/Action.Checkout?$ format = application / json; odata.metadata = full

我收到以下回复。它缺少实际页面.....并且只有页面的导航参考。

   {
        @odata.context: "HTTP://LOCALHOST:4448/API/V1/$METADATA#BOOK/$ENTITY"
        @odata.type: "#Book"
        @odata.id: "HTTP://LOCALHOST:4448/API/V1/BOOK(0)"
        @odata.editLink: "HTTP://LOCALHOST:4448/API/V1/BOOK(0)"
        ID@odata.type: "#Int64"
        ID: 0
        Name: null
        Type@odata.type: "#BookTypeEnum"
        Type: "Book"
        CreationDate@odata.type: "#DateTimeOffset"
        CreationDate: "0001-01-01T00:00:00-08:00"
        ModifyDate@odata.type: "#DateTimeOffset"
        ModifyDate: "0001-01-01T00:00:00-08:00"
        Owner: null
        Pages@odata.associationLink: "HTTP://LOCALHOST:4448/API/V1/BOOK(0)/PAGES/$REF"
        Pages@odata.navigationLink: "HTTP://LOCALHOST:4448/API/V1/BOOK(0)/PAGES"
    }

任何建议表示赞赏, 谢谢 d

1 个答案:

答案 0 :(得分:0)

解决方案是启用OData查询。为控制器中的函数指定[EnableQuery]。这将使您能够http://localhost:4448/api/v1/Books/Action.Checkout?$ expand = Pages