从 oj.Collection 或 oj.Model 传递请求 Headers

Passing Request Headers from oj.Collection or oj.Model

请告诉我如何通过 headers,如授权等,同时从 oj.Collection API

调用 REST 端点,请帮助我

https://learncodeshare.net/2017/03/29/making-a-rest-call-from-oracle-jet/

我从上面的 link 中尝试了 "customURL",但无法得到 headers

文档中未明确提及,但您可以在调用 collection.fetch() 方法时将 headers 添加为 object 输入属性之一。

例如:

self.model = oj.Model.extend({
        url: someURL,
        idAttribute: 'id'
});
var myModel = new self.model();
var collection = oj.Collection.extend({
        url: someURL,
        model: myModel
});
self.myCollection = new collection();

return new Promise(function (resolve, reject) {
    self.myCollection.fetch({
        headers: headers,
        success: function (collection, response, options) {
            resolve(response);
        }
    });
};

自定义URL 是发送授权的正确位置 header。根据文档,它 returns 是一个具有多个参数的 object。第一个参数是 REST URL,第二个参数是操作类型(GET、POST 等 - 是的,JET 也支持 POST),您可以添加其他参数以传递给您的休息电话。示例如下:

returnCollection.customURL = function(operation, collection, options) {
    const requestBody = { param: 'somevalue' };
    return {
      url: 'http://localhost:3000/api/customsearch',
      type: 'POST',
      contentType: 'application/json',
      beforeSend: function(xhr) {
        xhr.setRequestHeader('Authorization', 'Basic ...something...');
      },
      data: JSON.stringify(requestBody)
    };
};