我们可以使用OData客户端为syncfusion网格创建我们的请求但是使用正常响应(Reqular WebAPI)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我们可以使用OData客户端为syncfusion网格创建我们的请求但是使用正常响应(Reqular WebAPI)相关的知识,希望对你有一定的参考价值。

我在使用带有OData4Adaptor的DataManager消耗响应时遇到问题,在Syncfusion中它是某种限制,它只消耗来自OData WebApi的数据,而不是普通的WebAPI。

以下工作:

Api响应:

{
    "@odata.context": "http://localhost:32097/odata/$metadata#Movies",
    "@odata.count": 30,
    "value": [{
        "Id": 1,
        "Title": "StarWars - The Force Awakens",
        "ReleaseDate": "2015-10-25T00:00:00+05:30",
        "Rating": "FiveStar",
        "LastModifiedOn": "2017-12-20T16:43:14.3413207+05:30"
    }]
}

以下不起作用:

Api响应:

{
    "count": 15,
    "message": "",
    "value": [{
        "code": "asdf",
        "description": "Test ASDF",
        "createdBy": "SA        ",
        "createdDate": "2017-12-13T06:53:30.183"
    }]
}
答案

ODataV4Adaptor期望以标准OData V4格式进行响应。要使用ODataV4Adaptor接受其他响应格式,可以通过扩展ODataV4Adaptor来编写自定义适配器。

import { DataManager, Query, ODataV4Adaptor } from '@syncfusion/ej2-data';

class CustomODataAdaptor extends ODataV4Adaptor {
      processResponse(data: Object, dataManager: DataManager, query: Query) {
       /**
        * Return the result in the { result, count } pair when query has requiresCount() enabled.
        * else simply return the entity collection.
        *  Response structure:
        *  {  
        *   "count": 15,
        *   "value": [{}, {}.....]
        *    }
        */
       return query.isCountRequired ? { result: data['value'], count: data['count'] } : data['value'];
   }
}

//Assign the custom adaptor as follows
new DataManager({ url: SERVICE_URI, adaptor: new CustomODataAdaptor })
   .executeQuery(new Query().take(8).requiresCount()).then((e) => {
  // e.result will hold the result
});

现在,DataManager可以接受来自非OData WebAPI的响应。

有关DataManager中的更多可用适配器,请查看以下帮助链接。

DataAdaptors:http://ej2.syncfusion.com/15.4.17/documentation/data/adaptors.html编写自定义适配器:http://ej2.syncfusion.com/15.4.17/documentation/data/adaptors.html?lang=typescript#writing-custom-adaptor

以上是关于我们可以使用OData客户端为syncfusion网格创建我们的请求但是使用正常响应(Reqular WebAPI)的主要内容,如果未能解决你的问题,请参考以下文章

OData WebAPI 2 复杂授权

ODATA WEB API----ODATA服务与客户端

Syncfusion Xamarin.Forms生成的PDF格式的文本

具有 OData 格式 = json 的剑道网格数据源

Flutter:在 Syncfusion CartesianChart 中显示“无数据”消息

使用 OData 生成器生成类型化 OData 客户端:自动生成的代码无法与 SAP 库一起编译