Я пытаюсь сгенерировать пакетный запрос на создание двух объектов: родительского объекта и дочернего объекта, принадлежащего этому родителю. Для связи между ними я хочу использовать заголовок 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--
Есть ли у кого-нибудь какие-либо предложения о том, как решить эту проблему, чтобы заголовок идентификатора контента был правильно привязан к родительскому объекту, а не к набору изменений?