IBM MobileFirst 7.0 - Сбой при вызове процедуры адаптера с REST API

Я пытаюсь извлечь данные из HTTP-адаптера, используя новый REST API.
это некоторые из моих возвращенных объектов JSON:

    "items": [
        {
            "category": "category 1",
            "produit": [
                {
                    "id": "57",
                    "name": "this is my name",
                    "answer": [
                        {
                            "id": "146",
                            "answername": " answer 1",
                            "istrue": "0",
                            "questionid": "57"
                        },
                        {
                            "id": "147",
                            "answername": "answer 2",
                            "istrue": "0",
                            "questionid": "57"
                        }
                   ]
               }
          ]
      }
 ]

Когда я вызываю процедуру, используя WL.Client.invokeProcedure(invocationData, options); это работает отлично.

           var invocationData = {
                    adapter : 'AuthentificationAdapter',
                    procedure : 'getquestion',
                    parameters : [jsontab],
                };
            WL.Client.invokeProcedure(invocationData,{
                onSuccess : $.proxy(function(data)
                {
                    deferred.resolve(data.invocationResult.items);
                },this),
                onFailure : $.proxy(function(error)
                {
                    deferred.reject(error);
                },this)
            });
            return deferred.promise

Но когда я использовал REST API, он возвращается с Failed to read the HTTP response а также Failed to parse JSON string

вот мой код запроса ресурса:

var resourceRequest = new WLResourceRequest("/adapters/AuthentificationAdapter/getquestion", WLResourceRequest.POST, 30000);
            resourceRequest.setQueryParameters(jsontab);
            resourceRequest.send().then(
                $.proxy(function(data) {
                    deferred.resolve(data.responseJSON.items);
                },this),

                $.proxy(function(error) {
                    deferred.reject(error);
                },this)
            );

            return deferred.promise;

Кажется, что REST API не поддерживает полный объект JSON в качестве возврата, как это делает WL.Client?

1 ответ

WL.Client.invokeProcedure возвращает обещание, поэтому вы должны использовать следующее (для первой части) вместо реализации собственного.

var invocationData = {
         adapter : 'AuthentificationAdapter',
         procedure : 'getquestion',
         parameters : [jsontab],
};

return WL.Client.invokeProcedure(invocationData);

WLResourceRequest.send также возвращает обещание, поэтому вы должны использовать

var resourceRequest = new WLResourceRequest("/adapters/AuthentificationAdapter/getquestion", WLResourceRequest.GET, 30000);
resourceRequest.setQueryParameter('params', [jsontab]);
return resourceRequest.send();

Обратите внимание, что вы должны использовать setQueryParameter и в качестве первого аргумента вы должны передать 'params' и как второй массив, содержащий все аргументы для функции адаптера.

К вашему сведению: я предполагаю, что предыдущие два фрагмента кода находятся внутри функции, и поэтому я возвращаю обещание, как вы делали раньше.

Другие вопросы по тегам