Использование службы REST в XPage

Может ли кто-нибудь указать мне на статью, учебник или пошаговое руководство по началу работы с использованием служб REST в XPages? Я видел несколько, использующих службу данных Domino или службу Domino REST, но я хотел бы видеть, чтобы одна из них использовала внешние службы REST, такие как PayPal.

Пожалуйста, не направляйте меня к Social Business Toolkit, я просмотрел его и даже скачал, но не думаю, что мне нужно устанавливать J2EE и Eclipse, чтобы увидеть демонстрацию из 12 строк JavaScript.


person John    schedule 17.01.2014    source источник
comment
Рискуя саморекламой, я бы порекомендовал приобрести копию книги XPages Extension Library; Глава 11 полностью посвящена службам REST. Несколько примеров ссылаются на демонстрационную базу данных, на которую ссылается Лотар, но это довольно подробный обзор многих доступных вариантов. Еще один важный момент: если вы используете Domino, вы установили J2EE; если вы используете Designer, вы установили Eclipse... просто не могли не указать на это.   -  person Tim Tripcony    schedule 18.01.2014
comment
Да, понял, но мое понимание SBT заключалось в том, что вам нужно снова настроить эту среду, чтобы использовать ее. Я скачал его и попытался посмотреть образец базы данных, но в Designer я получил около 40 ошибок, которые не смог исправить. Понятия не имею, куда идти дальше, и я хотел сказать, должен ли я это делать? У меня есть книга, но я не видел помощи в использовании внешних сервисов REST. посмотрю еще раз.   -  person John    schedule 19.01.2014
comment
По общему признанию, недостатком тщательности книги является то, что если вы ищете одну конкретную тему, вы должны найти ее во всем остальном, что освещено. Если вы уже имеете в виду конкретную услугу, которую вы хотите использовать, чем больше подробностей о ней вы можете предоставить, тем легче нам будет дать четкий ответ. Давайте начнем с этого: на основе XML, JSON или и того, и другого? И если оба, то что бы вы предпочли использовать?   -  person Tim Tripcony    schedule 19.01.2014
comment
Я пытаюсь использовать API REST PayPal в Domino. Мне так и не удалось скомпилировать ни один из их примеров Java в Domino, поэтому я решил попробовать их REST API. Игровая площадка REST здесь devtools-paypal.com/hateoas/. все выглядит очень просто, но я не знаю, как это подключить в Domino.   -  person John    schedule 19.01.2014
comment
Привет, Тим! Я пытаюсь использовать один образец, который, как мне кажется, может быть уместным в вашей книге «Использование сервисных данных из внешних приложений — гаджеты OpenSocial». Пробовал копировать оттуда код в XPage, но он у меня не компилируется, получаю ошибку Тег в корне страницы не может быть из неизвестного пространства имён. Я что-то пропустил?   -  person John    schedule 23.01.2014


Ответы (2)


Я знаю, что это произошло немного постфактум, но для простого использования конечной точки RESTful для использования в XPages я недавно писал в блоге о том, как сделать это на стороне сервера. В моей реализации используется класс Java, используемый для генерации вывода через URLConnection, и, в конечном счете, StringBuffer для чтения содержимого, а затем его анализа в JsonObject для возврата. Я сделал два продолжения по этой теме, и вы можете найти их соответственно:

Страница серии/TOC

  1. Использование REST, на стороне сервера с Java
  2. Использование REST с аутентификацией
  3. Создание пользовательских данных JSON из Java

В моих примерах используется библиотека Google GSON, но, , как указал Пол Т. Кэлхун, есть com.ibm.commons.util.io.json, который уже некоторое время поставляется вместе с Domino и, вероятно, является лучшим вариантом для разработчиков Domino (без внешних зависимостей и потенциальных java. редактирование политики).

Основная структура метода такова:

/* 
 * @param String of the url
 * @return JsonObject containing the data from the REST response.
 * @throws IOException
 * @throws MalformedURLException
 * @throws ParseException 
 */
public static JsonObject GetMyRestData( String myUrlStr ) throws IOException, MalformedURLException {
    JsonObject myRestData = new JsonObject();
    try{

        URL myUrl = new URL(myUrlStr);
        URLConnection urlCon = myUrl.openConnection();
        urlCon.setConnectTimeout(5000);
        InputStream is = urlCon.getInputStream();
        InputStreamReader isR = new InputStreamReader(is);
        BufferedReader reader = new BufferedReader(isR);
        StringBuffer buffer = new StringBuffer();
        String line = "";
        while( (line = reader.readLine()) != null ){
            buffer.append(line);
        }
        reader.close();
        JsonParser parser = new JsonParser();
        myRestData = (JsonObject) parser.parse(buffer.toString());

        return myRestData;

    }catch( MalformedURLException e ){
        e.printStackTrace();
        myRestData.addProperty("error", e.toString());
        return myRestData;
    }catch( IOException e ){
        e.printStackTrace();
        myRestData.addProperty("error", e.toString());
        return myRestData;
    }
}
person Eric McCormick    schedule 02.09.2014
comment
Поскольку мой метод создает com.google.gson.JsonObject, если вы не хотите применять тип класса в SSJS, просто измените метод для вывода строки, а затем выполните toJson/JSON.parse строки в SSJS. . - person Eric McCormick; 04.11.2014

Есть множество статей и т.д. В основном я использую демонстрационную базу данных Xpages ExtLib, доступную в openNTF. Если у вас его нет: просто установите extlib, демонстрационная база данных является частью пакета. Говоря о SBT: в зависимости от вашей версии Domino Designer у вас уже может быть доступный инструментарий (например, версия 9). Также доступна еще одна демонстрационная база данных с примерами SBT. В общем, мне интересно, что вы имеете в виду под установкой J2EE/Eclipse

person Lothar Mueller    schedule 17.01.2014
comment
Я использую Domino 9, загрузил весь 150-мегабайтный SBT sdk, чтобы получить демонстрационную базу данных, и я не могу скомпилировать ее в Domino. Есть еще демо БД? - person John; 19.01.2014
comment
Хорошо, я скачал и посмотрел демонстрационную базу данных из ExtLib. Мне кажется, что речь идет об использовании элемента управления REST для публикации службы REST. Это не то, что я ищу, я хотел бы использовать общедоступную службу REST. Этого нет в наличии или я не там ищу? - person John; 22.01.2014
comment
У меня сейчас нет демонстраций, но, насколько я помню, обе содержат примеры использования данных REST. Кроме этого, я помню, как читал об использовании REST из Domino/Xpages. Я думаю, что это должно было быть в какой-то вики, доступной на сайте IBM developerWorks. - person Lothar Mueller; 22.01.2014
comment
ОК, я просмотрел всю демонстрационную базу данных и не могу найти примеров использования REST-сервиса, отличного от Domino. Дополнительные сведения см. в этом обсуждении: www-10.lotus. com/ldd/xpagesforum.nsf/ - person John; 23.01.2014
comment
Интересная дискуссия, спасибо за добавление URL. Вы пробовали обходной путь Пану (от 2-го до последнего ответа)? Пану также выдвинул еще одну идею, упомянув потребителя веб-сервисов. Кроме того, кажется, что это не работает из коробки, я боюсь - person Lothar Mueller; 24.01.2014
comment
Я действительно уже отказался от использования веб-сервисов в Domino, в лучшем случае это похоже на взлом. Я надеялся использовать REST через HATEOS, так как это казалось намного проще и меньше зависело от фреймворка. Сейчас я подумываю о том, чтобы отказаться от Domino для любой такой работы, поскольку я не могу найти никаких примеров, поэтому я думаю, что, должно быть, я вообще лаю не по тому дереву. - person John; 26.01.2014