Как установить заголовок Content-ID для правильного запроса в SAP Hybrid Application Toolkit?

Я пытаюсь сгенерировать пакетный запрос на создание двух объектов: родительского объекта и дочернего объекта, принадлежащего этому родителю. Для связи между ними я хочу использовать заголовок OData Content-ID. Я генерирую запрос следующим образом:

    this.model.create("/ParentSet", {
            Id: "000777000",
            Store: "16"
        }, {
            error: function (errormessage) {
                alert("create error" + JSON.stringify(errormessage));
            },
            headers: {
                "content-ID": 1
            }
        });

        this.model.create("/$1/ToChild", {

            Id: "131313",
            Area: ""

        }, {
            error: function (errormessage) {
                alert("create error" + JSON.stringify(errormessage));
            }

        });

При выполнении из веб-приложения sapui5 код приводит к созданию правильной полезной нагрузки запроса:


--batch_a8d1-2414-ee3e
content-type: multipart/mixed; boundary=changeset_0f62-99e1-b9a4

--changeset_0f62-99e1-b9a4
content-type: application/http
content-transfer-encoding: binary

POST ParentSet HTTP/1.1
content-ID: 1
sap-contextid-accept: header
Accept: application/json
Accept-Language: en-GB
DataServiceVersion: 2.0
MaxDataServiceVersion: 2.0
x-csrf-token: UrrKfxCwzgpBlY8GVgtdWg==
Content-Type: application/json
Content-Length: 31

{"Id":"000777000","Store":"16"}
--changeset_0f62-99e1-b9a4
content-type: application/http
content-transfer-encoding: binary

POST $1/ToChild HTTP/1.1
sap-contextid-accept: header
Accept: application/json
Accept-Language: en-GB
DataServiceVersion: 2.0
MaxDataServiceVersion: 2.0
x-csrf-token: UrrKfxCwzgpBlY8GVgtdWg==
Content-Type: application/json
Content-Length: 48

{"Id":"131313","Area":""}
--changeset_0f62-99e1-b9a4--

--batch_a8d1-2414-ee3e
content-type: application/http
content-transfer-encoding: binary

GET ParentSet/$count HTTP/1.1
sap-cancel-on-close: true
sap-contextid-accept: header
Accept: text/plain, */*;q=0.5
Accept-Language: en-GB
DataServiceVersion: 2.0
MaxDataServiceVersion: 2.0
x-csrf-token: UrrKfxCwzgpBlY8GVgtdWg==


--batch_a8d1-2414-ee3e
content-type: application/http
content-transfer-encoding: binary

GET ParentSet?$skip=0&$top=100 HTTP/1.1
sap-cancel-on-close: true
sap-contextid-accept: header
Accept: application/json
Accept-Language: en-GB
DataServiceVersion: 2.0
MaxDataServiceVersion: 2.0
x-csrf-token: UrrKfxCwzgpBlY8GVgtdWg==


--batch_a8d1-2414-ee3e--

Однако при выполнении из приложения SAP HAT на основе Cordova заголовок content-id помещается в набор изменений, а не в родительский объект следующим образом:

--batch_709b8b9352ac4342a0efb1e012d_1
content-type: multipart/mixed; boundary=changeset_709b8b9352ac4342a0efb1e012d_2

--changeset_709b8b9352ac4342a0efb1e012d_2
content-type: application/http
content-transfer-encoding: binary
content-id: 1

POST ParentSet HTTP/1.1
Content-Type: application/json
Accept: application/json;q=1, application/atom+xml;q=0.5
accept-language: en-US
sap-contextid-accept: header

{"Id":"000777000","Store":"16"}
--changeset_709b8b9352ac4342a0efb1e012d_2
content-type: application/http
content-transfer-encoding: binary

POST $1/ToChild HTTP/1.1
Content-Type: application/json
Accept: application/json;q=1, application/atom+xml;q=0.5
accept-language: en-US
sap-contextid-accept: header

{"Id":"131313","Area":""}
--changeset_709b8b9352ac4342a0efb1e012d_2--

--batch_709b8b9352ac4342a0efb1e012d_1--

Есть ли у кого-нибудь какие-либо предложения о том, как решить эту проблему, чтобы заголовок идентификатора контента был правильно привязан к родительскому объекту, а не к набору изменений?


person Deyan Danov    schedule 08.08.2020    source источник


Ответы (2)


Проблема была решена путем изменения автономной конфигурации в SAP CP Mobile Services. В разделе Мобильное приложение > Собственный/гибридный > Информация > Назначенные функции > Автономный режим > Конфигурация вам нужно нажать кнопку редактирования. Во всплывающем меню для параметра «Расположение заголовка Content ID» нужно было установить значение «Операция», если Mime.

скриншот меню конфигурации

скриншот меню конфигурации

person Deyan Danov    schedule 10.08.2020

Ты пробовал

var oModel = new sap.ui.model.json.JSONModel(your header data here);    
this.getView().setModel(oModel,"HeaderDataModel");
// and then you can use header data anywhere in the view using "HeaderDataModel"

<button enabled ="{HeaderDataModel>/HeaderAttr2}">

отсюда: https://answers.sap.com/questions/31885/ui5-path-to-parent-property.html

person aw123    schedule 10.08.2020