自定义页眉JayData的OData请求(JayData oData request with cu

2019-10-18 17:58发布

我需要发送自定义页眉到我的WCF OData服务,但与下面的函数头不得到修改。

entities.onReady(function () {

    entities.prepareRequest = function(r) {
        r[0].headers['APIKey'] = 'ABC';
    };

    entities.DataServiceClient.toArray(function (cli) {
        cli.forEach(function (c) {
            console.log(c.Name)
        });
    });
});

头不受影响。 任何线索?

谢谢!

Answer 1:

看来,标志着答案不正确。 我是从一个类似的问题的痛苦,但得到它不改变datajs工作。

我的问题是,我在做一个跨域(CORS)的要求,但并未明确允许的头。 之后,我加入了正确的CORS头添加到Web服务,它的工作。



Answer 2:

编辑

退一步讲,好像还有东西在JayData断供的合并请求。

这不是CORS和无关吧!

看到JayData的OData请求与自定义标题- ROUND 2

波纹管“黑客”的作品,但对上述问题应该采取这个问题到一个新水平。

----------

老答案

没关系我找到了解决办法。

好像prepareRequest在JayData 1.3.2(ODataProvider)被打破。

作为一个黑客,我加入extraHeaders在providerConfiguration(oDataProvider.js)对象:

  this.providerConfiguration = $data.typeSystem.extend({
                   //Leave content unchanged and add the following:
                    extraHeaders: {}
                }, cfg);

然后在865线的RequestData修改如下:

var requestData = [
                    {
                        requestUri: this.providerConfiguration.oDataServiceHost + sql.queryText,
                        method: sql.method,
                        data: sql.postData,
                        headers: _.extend({
                            MaxDataServiceVersion: this.providerConfiguration.maxDataServiceVersion
                        },this.providerConfiguration.extraHeaders)
                    },

注意:使用荫lodash对于为了方便地使用,任何JS扩展应该做的伎俩。

那么你只需创建你的客户是这样的:

 var entities = new Entities.MyEntities({
            name: 'oData',
            oDataServiceHost: 'http://myhost.com/DataService.svc',
            maxDataServiceVersion: "2.0",
            //enableJSONP: true,
            extraHeaders: {apikey:'f05d1c1e-b1b9-5a2d-2f44-da811bd50bd5', Accept:'application/json;odata=verbose'}
        }
    );


文章来源: JayData oData request with custom headers