Чтение параметров HTTP заголовка в OData сервисе

В этой заметке я хочу продемонстрировать вариант реализации, который позволит выполнить чтение параметров HTTP заголовка в OData сервисе, относящемуся к вашему SAPUI5 приложению.

Что такое HTTP заголовок?

Cм. HTTP Headers

HTTP headers let the client and the server pass additional information with an HTTP request or response. An HTTP header consists of its case-insensitive name followed by a colon (:), then by its value. Whitespace before the value is ignored.

Пример получения доступа к HTTP заголовку из OData сервиса

Чтобы получить доступ к HTTP заголовку непосредственно в OData сервисе, можно добавить ниже представленный код в задействованный метод *DPC_EXT класса, к которому выполняется обращение из SAPUI5 приложения.

См. Data Provider Class
См. заметку Создание Web приложения с помощью фреймворка SAPUI5 (6) в которой рассматривается пример создания OData сервиса для SAPUI5 приложения
DATA: lt_request_header TYPE tihttpnvp,
          ls_request_header LIKE LINE OF lt_request_header.
 
    LOOP AT  me->mr_request_details->technical_request-request_header ASSIGNING FIELD-SYMBOL(<fs_req_header>).
    
      ls_request_header-name = <fs_req_header>-name.
      ls_request_header-value = <fs_req_header>-value.
      APPEND VALUE #( name = <fs_req_header>-name
                                  value =  <fs_req_header>-value )
      TO lt_request_header.
    
    ENDLOOP.

На ниже представленном видеофрагменте представлена последовательность действий в результате которой, после выполнения запроса в backend-систему из SAPUI5 приложения, заполняется внутренняя таблица lt_request_header, в которой содержатся данные HTTP заголовка.

Пример определения пользовательских параметров в HTTP заголовке

Чтобы определить какие-либо пользовательские параметры в HTTP заголовке, необходимо воспользоваться методом SetHeaders класса sap.ui.model.odata.v2.ODataModel перед выполнением запроса в backend

См. class sap.ui.model.odata.v2.ODataModel

См. setHeaders

Например,

var sUrl = "/sap/opu/odata/SAP/ZAPP12_SRV";
var odataModel = new sap.ui.model.odata.v2.ODataModel(sUrl, {
                json: true,
                loadMetadataAsync: true
            });
 
            var oModel = new sap.ui.model.json.JSONModel();
 
            odataModel.setHeaders({
                "myCustomparam1": "userPressed",
                "myCustomparam2": new Date(Date.now())
            });

Проверяю наличие доступа к определенным в SAPUI5 приложении параметров, добавляемых к HTTP заголовку