HTTP-доступ к RESTful-сервисам из DB2: Задаваемые пользователем REST-функции для DB2

Доступ в Интернет из систем управления реляционными базами данных

На данный момент REST (Representational State Transfer) является предпочтительным способом взаимодействия в средах на основе сервисно-ориентированных архитектур. Существует множество сервисов и источников информации, которые можно адресовать с помощью URL-указателей и к которым можно обращаться с использованием протокола HTTP. С другой стороны, значительное количество информации по-прежнему хранится в системах управления реляционными базами данных (RDBMS) — таких как DB2®. Современные RDBMS предоставляют мощные функции обработки реляционных данных (посредством SQL) и XML-данных (посредством SQL/XML или XQuery).

Михаэл Шенкер, инженер по оптимизации программного обеспечения IBM DB2 для z/OS, IBM

Фото автора: Михаэл ШенкерМихаэл Шенкер (Michael Schenker) получил степень магистра вычислительной техники в Лейпцигском университете прикладных наук (Германия). Имеет семилетний стаж работы в IBM. За свою карьеру Михаэл работал над несколькими продуктами на основе баз данных, начав с работы стажером по DB2 Information Integration с акцентом на нереляционные оболочки. С конца 2003 года – штатный сотрудник IBM. В 2006 году вошел в штат отделения инструментов базы данных и работал над функциональными возможностями Web-сервисов DB2 в IBM Data Studio Developer. За это время приобрел богатый опыт в области SOA и Web-технологий. Недавно вошел в состав группы разработки оптимизатора DB2 для z/OS, но по-прежнему интересуется SOA и Web-технологиями, связанными с DB2.



Сюзан Малайка, старший инженер, IBM

Сюзан Малайка (Susan Malaika) работает старшим инженером в отделе IBM Information Management Group (часть IBM Software Group). Специализируется на XML, Web и базах данных. Разработала стандарты, поддерживающие данные для сетевых сред на Global Grid Forum. Являясь разработчиком программных продуктов IBM, работает также в качестве интернет-специалиста, аналитика данных и разработчика приложений. Соавтор книги о Web и опубликованных статей по обработке транзакций и XML. Член IBM Academy of Technology.



10.07.2013

Обзор

В статье описывается набор пользовательских функций (user-defined function, UDF) для DB2, которые позволяют приложениям потреблять сервисы на базе REST из SQL. Рассматриваются следующие темы:

  • Введение
  • Базовые скалярные функции REST UDF
    • Отсылка адаптированных значений HTTP-заголовка
    • Сочетание XML-функций с функциями REST UDF на примере вызова новостного потока BBC
    • Соединение результатов функции REST UDF с реляционной таблицей
    • Безопасность — аутентификация и шифрование
  • Helper-функции
    • Кодирование/декодирование URL
    • Кодирование/декодирование Base64

Введение

О каких версиях DB2 идет речь

Информация этой статьи применима к версии DB2 for Linux®, UNIX®, and Windows® и к версии DB2 for z/OS®.

Протокол HTTP был определен более 20 лет назад, после того как в 1999 г. было реализовано последнее крупное изменение (HTTP 1.1, см. RFC2616). Долговечность протокола HTTP является признаком его стабильного состояния. HTTP — это самый популярный протокол в Интернете. Со временем поверх HTTP были построены дополнительные протоколы и шаблоны использования, такие как REST и WebDAV. Многие веб-сайты и приложения предоставляют интерфейсы на базе HTTP для доступа к информации.

Другие форматы, используемые в Интернете: JSON

Сегодня существует множество других основанных на тексте форматов, которые успешно используется в Интернете. JSON в последние годы приобрел большую популярность. В статье Создание приложения на базе pureXML и JSON: Часть 1. Хранение и извлечение JSON с помощью технологии pureXML в DB2 показан один из способов обработки JSON в DB2 — с использованием формата JSONx для преобразования JSON в XML и обратно.

С течением времени был разработан ряд усовершенствованных форматов сообщений (главным образом на основе XML), которые сегодня используются для обмена данными в сочетании с протоколом HTTP к качестве транспортного уровня — например, SOAP, RSS, Atom.

Системы управления реляционными базами данных (RDBMS) также эволюционировали и приобрели функциональные возможности для обработки и хранения, не ограничивающиеся реляционными данными и SQL. Например, эти СУБД способны поддерживать XML нативным образом.

Рисунок 1. Доступ в Интернет из DB2 посредством REST-функций
Diagram shows web content connecting throug HTTP consumer functions for DB2, up to relational and XML content in DB2

В этой статье мы вводим в SQL расширения в форме задаваемых пользователем ("пользовательских") функций (user-defined function, UDF), которые обращаются к адресуемым по URL-указателям ресурсам посредством протокола HTTP непосредственно из SQL-операторов. Такие функции получили название функции типа REST UDF или REST-функции. Эти новые функции позволяют использовать уже имеющиеся в RDBMS дополнительные возможности, — такие как SQL-агрегация и Xpath-доступ — для манипулирования данными, извлеченными из Интернета, и для хранения этих данных. REST-функции позволяют выдавать простые HTTP-запросы типа GET или POST.

Кроме того, для REST-функций доступны более сложные сигнатуры (verbose), что позволяет анализировать коды HTTP-ответа и значения заголовков, а это весьма полезно для отладки. REST-функции с сигнатурами типа verbose не рассматриваются в данной статье, однако шаблоны в файле sample_tableUDF_Queries.txt позволяют получить представление о том, как можно использовать эти функции.

REST-функции способны трактовать информацию, представленную посредством HTTP, как двоичные или как текстовые данные. Двоичные версии этих функций обращаются к такой информации, как изображения, звуки и другие данные в двоичных форматах, а текстовые версии имеют дело с HTML-страницами и с другой основанной на тексте информацией посредством автоматического преобразования информации из кодовой страницы используемой базы данных и обратно. Текстовые данные в Интернете обычно представлены в формате Unicode, а данные в реляционных базах данных часто представлены в других кодировках.

Выполнив шаги, изложенные в этой статье и в сопровождающих ее материалах для загрузки, вы научитесь извлекать данные из Интернета и соединять их с локально хранящимися реляционными данными. Кроме того, вы научитесь применить нативные возможности DB2 в области хранения XML-данных для обработки, сохранения и преобразования данных на базе XML (например, использовать функцию XMLTABLE для генерации реляционного набора данных из XML-документа).

Статья начинается с представления функций REST UDF. Затем рассматриваются примеры манипулирования текстовой и двоичной информацией в Интернете. Также описывается адаптация REST-запросов посредством настройки опций HTTP-заголовка. Пример, основанный на доступе к RSS-потоку, иллюстрирует интеграцию информации из Интернета и из базы данных. Рассмотрены такие вопросы, как HTTP-аутентификация и шифрование. И, наконец, в статье приведены примеры helper-функций для выполнения кодирования/декодирования URL и Base64. В приложении к статье приведен полный набор параметров REST-функций.

Эта статья сопровождается материалами для загрузки, которые содержат функции REST UDF для продуктов DB2 for LUW и DB2 for z/OS, а также различные шаблоны. Пакет загрузки содержит набор базовых скалярных функций, а также некоторые helper-функции.


Базовые скалярные REST-функции

Базовые скалярные функции обеспечивают доступ к контенту в Интернете. Имеются REST — функции для четырех наиболее распространенных HTTP-действий: GET, POST, PUT, DELETE. Доступны два метода: один для двоичного контента, другой — для текстового. Схема DB2 для этих функций носит название DB2XML.

Все базовые REST-функции являются скалярными функциями, которые возвращают контент ответного HTTP-сообщения в виде объекта типа BLOB (двоичный объект) или типа CLOB (текстовый объект). Сигнатуры функций соответствуют следующему шаблону:

DB2XML.HTTP<method><type>(url, httpHeader <,
input>)
Таблица 1. Имя метода
methodGET, POST, PUT, DELETE
типBLOB (двоичный контент) или CLOB (текстовый контент); определяет возвращаемый тип и тип документа <input>
Таблица 2. Входной параметр
url(Обязательный) URL-указатель ресурса, к которому производится обращение
httpHeader(Необязательный) Дополнительные значения заголовка, используемые вместе с запросом
input(Только для POST, PUT) Данные, посылаемые с запросом, такие как BLOB или CLOB

Имеется дополнительный метод, с помощью которого можно выполнить HTTP-запрос HEAD. Он не посылает и не извлекает данных. Ниже показан HTTP-запрос GET для веб-сайта IBM.

SELECT 
   DB2XML.HTTPGETCLOB('http://www.ibm.com','') 
FROM SYSIBM.SYSDUMMY1

Результатом этого запроса является HTML-текст веб-страницы IBM в виде текстовых данных CLOB.

Отсылка адаптированных значений HTTP-заголовка

Выше мы задали для значений HTTP-заголовка пустую строку, поэтому при выдаче сообщения-запроса используются значения по умолчанию. Может возникнуть необходимость в предоставлении вместе с запросом специальной информации заголовка (например, для изменения типа контента или для настройки дополнительного поля заголовка SOAPAction "SOAPAction" при вызове веб-сервиса на основе SOAP).

Для каждого метода может быть указан дополнительный XML-документ HTTP-заголовка, который позволяет задавать дополнительные значения HTTP-заголовка. Этот XML-документ заголовка должен соответствовать следующему формату.

Листинг 1. Формат XML-документа HTTP-заголовка
<httpHeader connectionTimeout="10" follwRedirects="true">
	<header name="Accept" value="text/plain,application/xml,*/*;q=0.8" />
	<header name="Accept-Language" value="en-us,en;q=0.5" />
</httpHeader>

Каждое специальное поле заголовка представлено элементом <header>, который имеет атрибуты name и value. Корневой элемент <httpHeader> позволяет задавать несколько дополнительных опций запроса с помощью атрибутов.

Таблица 3. Опции, которые могут быть заданы с помощью элемента <httpHeader>
Имя атрибутаТипПо умолчаниюОписание
connectionTimeoutIntegerСистемное значение по умолчаниюТаймаут в миллисекундах
readTimeoutIntegerСистемное значение по умолчаниюТаймаут в миллисекундах
followRedirectsBooleanTrueОпределяет, следует ли выполнять перенаправление
useCachesBooleanTrueОпределяет, следует ли использовать кэш

XML-документ заголовка может быть предоставлен как CLOB-объект или как нативное XML-значение (только для продукта DB2 LUW).

Листинг 2. Вызов веб-сервиса на базе SOAP 1.1 посредством HTTP-метода POST
SELECT DB2XML.HTTPPOSTCLOB('http://www.webservicex.net//stockquote.asmx',
CAST ('<httpHeader>
       <header name="Content-Type" value="text/xml;charset=utf-8"/>
       <header name="SOAPAction" value="&quot;http://www.webserviceX.NET/GetQuote&quot;"/>
       </httpHeader>' AS CLOB(1K)),
 CAST('<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
          <soap:Body>
             <GetQuote xmlns="http://www.webserviceX.NET/">
                <symbol>IBM</symbol>
             </GetQuote>
          </soap:Body>
       </soap:Envelope>' AS CLOB(10K))
) FROM SYSIBM.SYSDUMMY1;

Результат — ответное сообщение веб-сервиса на основе SOAP в виде текстовых данных CLOB.

Сочетание XML-функций с функциями REST UDF на примере вызова новостного потока BBC

В этом примере показано, как легко с помощью функции DB2 под названием XMLTABLE осуществляется извлечение новостного потока BBC и преобразование его в реляционный набор данных.

Рисунок 2. Использование функций REST UDF и DB2 pureXML для потребления новостного потока
Diagram shows BBC news feed communicating through HTTP consumer functions for DB2, through an XMLTABLE function where RSS format is shredded into a result set, and into DB2

Сначала посмотрим на RSS-поток BBC с помощью следующего оператора.

SELECT DB2XML.HTTPGETCLOB('http://feeds.bbci.co.uk/news/world/rss.xml?edition=uk','') 
       FROM SYSIBM.SYSDUMMY1;

Теперь мы можем упаковать вызов функции XMLTABLE для преобразования возвращенного XML-формата RSS-потока в реляционный результирующий набор.

Листинг 3. Разбиение новостного потока BBC в реляционный набор данных
SELECT *
   FROM XMLTABLE('$result/rss/channel/item' 
      PASSING XMLPARSE(
         DOCUMENT 
           DB2XML.HTTPGETBLOB('http://feeds.bbci.co.uk/news/world/rss.xml?edition=uk','')
      ) as "result"
         COLUMNS 
            title VARCHAR(128) PATH 'title',
            description VARCHAR(1024) PATH 'description',
            link VARCHAR(255) PATH 'link',
			pubDate VARCHAR(20) PATH 'substring(pubDate, 1, 16)'
   ) AS RESULT;

Результирующий набор содержит следующие четыре столбца: столбец TITLE (содержит заголовок элемента потока), столбец DESCRIPTION(содержит описание потока), столбец LINK (содержит URL-указатель на реальный новостной документ) и столбец PUBDATE.

Другие примеры содержатся в загружаемом пакете для этой статьи.

Соединение результатов функции REST UDF с реляционной таблицей

В предыдущем разделе функция XMLTABLE использовалась для препарирования XML-данных, возвращенных функцией REST UDF. Пример из этого раздела делает следующий шаг. Препарированный результирующий набор соединяется с существующей новостной таблицей, при этом четыре вышеуказанных столбца соответствуют новости с определенным заголовком.

Рисунок 3. Соединение результатов функции REST UDF с реляционной таблицей
Like Figure 2, except the XMLTABLE function joins with a local table to produce a result set
Листинг 4. Соединение результатов функции REST UDF с реляционной таблицей
   SELECT DB2XML.NEWS.*
   FROM XMLTABLE('$result/rss/channel/item' 
      PASSING XMLPARSE(
         DOCUMENT 
           DB2XML.HTTPGETBLOB('http://feeds.bbci.co.uk/news/world/rss.xml?edition=uk','')
      ) as "result"
         COLUMNS 
            title VARCHAR(128) PATH 'title'
   ) AS RESULT, DB2XML.NEWS
   WHERE RESULT.TITLE = DB2XML.NEWS.TITLE;

Безопасность — Аутентификация и шифрование

Использование сертификатов с функциями REST UDF

Пользовательские REST-функции (REST UDF) используют для коммуникации по протоколу SSL (secure socket layer) библиотеку Java Secure Socket Extension (JSSE). Для SSL-коммуникаций клиенту требуется хранилище сертификатов сервера. Управление этим хранилищем зависит от реализации библиотеки JSSE. Комплект IBM JDK имеет для этих целей собственную реализацию со специальными расширениями для z/OS (прочитайте статью IBM JSSE implementation on z/OS).

REST-функции поддерживают базовую HTTP-аутентификацию, а также SSL-шифрование с использованием протокола HTTPS.

В следующих примерах демонстрируется использование функции XMLTABLE для извлечения и разбора непрочитанных сообщений учетной записи Google Mail с целью их преобразования в реляционный результирующий набор.

Рисунок 4. Доступ к Gmail из DB2 с помощью функции REST UDF
Shows Gmail going through an Atom feed throuth secure acces via https to the HTTP consumer functions for DB2, and from there to the XMLTABLE function that shreds Atom format into a result set and feeds into DB2

Доступ к Gmail шифруется с помощью SSL и защищается с помощью базовой HTTP-аутентификации (в URL-адресе используется "https"). Gmail возвращает заголовки непрочитанных сообщений в виде Atom-потока; в этом примере мы используем функцию XMLTABLE для возвращения результатов в виде реляционного набора данных.

Листинг 5. Извлечение непрочитанных сообщений из Gmail с использованием SSL и HTTP-аутентификации
SELECT *
  FROM XMLTABLE('$result/*[local-name()=''feed'']/*[local-name()=''entry'']' 
    PASSING  
       XMLPARSE(DOCUMENT 
 DB2XML.HTTPGETBLOB('https://<username>:<password>@mail.google.com/mail/feed/atom/','')) 
AS "result"
  COLUMNS 
    title VARCHAR(128) PATH '*[local-name()=''title'']',
    summary VARCHAR(1024) PATH '*[local-name()=''summary'']',
    author_name VARCHAR(255) PATH '*[local-name()=''author'']/*[local-name()=''name'']',
    author_email VARCHAR(255) PATH '*[local-name()=''author'']/*[local-name()=''email'']'
) AS RESULT;

Результат состоит из следующих столбцов: TITLE, SUMMARY, AUTHOR_NAME, AUTHOR_EMAIL.


Helper-функции

В дополнение к REST-функциям можно использовать т. н. helper-функции (вспомогательные функции) для выполнения кодирования/декодирования URL, а также для кодирования/декодирования Base64.

Кодирование/декодирование URL

Спецификация URL (RFC1738) задает ряд специальных символов, которые необходимо заменять т.н. управляющими последовательностями (например, если эти символы используются в строке запроса URL). Пакет загружаемых материалов содержит две функции для кодирования/декодирования URL. Первый параметр функции urlEncode представляет собой простую строку; первый параметр функции urlDecode представляет собой кодированную строку URL. Второй, необязательный, параметр обеих функций — используемая кодировка символов. Если в этой строке указано пустое значение, то используется кодировка UTF-8, согласно рекомендациям RFC3986.

Листинг 6. Пример кодирования URL
SELECT DB2XML.URLENCODE(
     'Please send and email to report our % earnings to Mark & Lisa at marklisa@xyz.com'
	 , NULL) 
       FROM SYSIBM.SYSDUMMY1

Result:	   
--------------------------------------------------------------------
Please+send+and+email+to+report+our+%25+earnings+to+Mark+%26+Lisa+at+marklisa%40xyz.com
Листинг 7. Пример декодирования URL
SELECT DB2XML.URLDECODE(
'Please+send+and+email+to+report+our+%25+earnings+to+Mark+%26+Lisa+at+marklisa%40xyz.com'
, NULL) 
FROM SYSIBM.SYSDUMMY1

Result:	   
----------------------------------------------------------------------
Please send and email to report our % earnings to Mark & Lisa at marklisa@xyz.com

Кодирование/декодирование Base64

Кодирование Base64 широко используется в Интернете для представления двоичных данных в виде строк (например, при пересылке хеш-ключей). Пакет загружаемых материалов содержит две функции для кодирования/декодирования Base64.

Листинг 8. Пример кодирования Base64
SELECT DB2XML.BASE64ENCODE(
 CAST(
 'Please send and email to report our % earnings to Mark & Lisa at marklisa@xyz.com' 
 AS VARCHAR(100) FOR BIT DATA)) 
 FROM SYSIBM.SYSDUMMY1

Result:
-----------------------------------------------------------------------
UGxlYXNlIHNlbmQgYW5kIGVtYWlsIHRvIHJlcG9ydCBvdXIgJSBlYXJuaW5ncyB0byBNYXJrICYgTGlzYSBhdCBtY
XJrbGlzYUB4eXouY29t
Листинг 9. Пример декодирования Base64
SELECT 
CAST(
   DB2XML.BASE64DECODE(
'UGxlYXNlIHNlbmQgYW5kIGVtYWlsIHRvIHJlcG9ydCBvdXIgJSBlYXJuaW5ncyB0byBNYXJrICYgTGlzYSBhdCBtY
XJrbGlzYUB4eXouY29t') AS VARCHAR(100) FOR MIXED DATA) 
FROM SYSIBM.SYSDUMMY1

Result:
-----------------------------------------------------------------------
Please send and email to report our % earnings to Mark & Lisa at marklisa@xyz.com

Поддержка http-прокси

Набор системных свойств Java должен быть настроен на поддержку HTTP-прокси, поскольку пользовательские REST-функции реализованы на Java. Можно использовать следующие свойства:

  • http.proxyHost
  • http.proxyPort
  • http.proxyUser
  • http.proxyPassword
  • http.nonProxyHosts

Продукт DB2 for Linux, UNIX, Windows не предоставляет доступа к системным свойствам JVM. Вместо этого функция REST UDF проверяет файл restudf.properties в каталоге $DB2INSTPATH/function, в котором пользователь может задать настройки HTTP-прокси следующим образом.

Листинг 10. Настройки HTTP-прокси в файле restudf.properties
http.proxyHost=myProxyHost.com
http.proxyPort=8090
http.proxyUser=user
http.proxyPassword=secret
http.nonProxyHosts=*.ibm.com|wikipedia.org|...

В среде DB2 for z/OS эти свойства можно специфицировать в файле JVMPROPS следующим образом (см. также файл installationNotesUDFzOS.txt в материалах для загрузки):

Листинг 11. Настройки HTTP-прокси в файле JVMPROPS
-Dhttp.proxyHost=myProxyHost.com
-Dhttp.proxyPort=8090
-Dhttp.proxyUser=user
-Dhttp.proxyPassword=secret
-Dhttp.nonProxyHosts=*.ibm.com|wikipedia.org|...

Заключение

REST-функции DB2 предоставляют простой и удобный способ обращения к ресурсам в Интернете из SQL-оператора. Несмотря на простоту этих функций, они достаточно универсальны для получения и потребления данных из многих источников. Описанные в статье REST-функции органично сочетаются с возможностями DB2 pureXML по причине широкого использования XML в качестве формата сообщений в Интернете. В статье излагаются базовые сведения об использовании REST-функций и об интеграции веб-информации с информацией базы данных. Кроме того, объясняется использование аутентификации и шифрования. И, наконец, описываются helper-функции, полезные при кодировании/декодировании URL и Base64.


Благодарности

Авторы статьи выражают свою благодарность Лин Лин за рецензирование статьи и за тестирование изложенных в ней инструкций.

Приложение

Таблица 4. Сигнатуры функций REST UDF
НаименованиеТип возвратаСигнатураHTTP VerbОписание
httpGetBlobBLOBhttpGetBlob(url VARCHAR(2048), httpHeader CLOB (10K)) RETURNS BLOB(5M)GETИзвлекает ресурс по заданному URL-указателю посредством HTTP GET. Ресурс возвращается как двоичный LOB-объект (BLOB).
httpGetClobCLOBhttpGetClob(url VARCHAR(2048), httpHeader CLOB (10K)) RETURNS CLOB(5M)GETИзвлекает текстовый ресурс по заданному URL-указателю посредством HTTP GET. Ресурс возвращается как символьный LOB-объект (CLOB). При необходимости выполняется преобразование символьного набора в кодовую страницу базы данных.
httpPutBlobBLOBhttpPutBlob(url VARCHAR(2048), httpHeader CLOB (10K), data BLOB(5M)) RETURNS BLOBPUTСоздает (загружает) двоичный ресурс по заданному URL-указателю посредством HTTP PUT. Ответное сообщение возвращается как двоичный LOB-объект (BLOB), если оно было выдано сервером.
httpPutClobCLOBhttpPutClob(url VARCHAR(2048), httpHeader CLOB (10K), data CLOB(5M)) RETURNS CLOBPUTСоздает (загружает) текстовый ресурс по заданному URL-указателю посредством HTTP PUT. Ответное сообщение возвращается как символьный LOB-объект (CLOB), если оно было выдано сервером. При необходимости выполняется преобразование символьного набора.
httpPostBlobBLOBhttpPostBlob(url VARCHAR(2048), httpHeader CLOB (10K), data BLOB(5M)) RETURNS BLOB(5M)POSTОбновляет двоичный ресурс по заданному URL-указателю посредством HTTP POST. Ответное сообщение возвращается как двоичный LOB-объект (BLOB).
httpPostClobCLOBhttpPostClob(url VARCHAR(2048), httpHeader CLOB (10K), data CLOB(5M)) RETURNS CLOB(5M)POSTОбновляет текстовый ресурс по заданному URL-указателю посредством HTTP POST. Ответное сообщение возвращается как символьный LOB-объект (CLOB). При необходимости выполняется преобразование символьного набора.
httpDeleteBlobBLOBhttpDeleteBlob(url VARCHAR(2048), httpHeader CLOB (10K)) RETURNS BLOBDELETEУдаляет двоичный ресурс по заданному URL-указателю посредством HTTP DELETE. Ответное сообщение, если таковое имеет место, возвращается как двоичный LOB-объект (BLOB).
httpDeleteClobCLOBhttpDelete(url VARCHAR(2048), httpHeader CLOB (10K)) RETURNS CLOBDELETEУдаляет текстовый ресурс по заданному URL-указателю посредством HTTP DELETE. Ответное сообщение, если таковое имеет место, возвращается как символьный LOB-объект (CLOB). При необходимости выполняется преобразование символьного набора.
httpBlobBLOBhttpBlob(url VARCHAR(2048), httpMethod VARCHAR(128), httpHeader CLOB (10K), data BLOB(5M)) RETURNS BLOBany HTTP verbВыполняет HTTP-запрос с предоставленным HTTP-оператором Сообщение запроса может быть представлено как двоичный LOB-объект (BLOB). Ответное сообщение возвращается как двоичный LOB-объект (BLOB), если оно было выдано сервером.
httpClobCLOBhttpClob(url VARCHAR(2048), httpMethod VARCHAR(128), httpHeader CLOB (10K), data CLOB(5M)) RETURNS CLOBany HTTP verbВыполняет HTTP-запрос с предоставленным HTTP-оператором. Сообщение запроса может быть представлено как символьный LOB-объект (CLOB). Ответное сообщение возвращается как символьный LOB-объект (BLOB), если оно было выдано сервером. При необходимости выполняется преобразование символьного набора.
httpHeadCLOB/XMLhttpHead(url VARCHAR(2048), httpHeader CLOB (10K)) RETURNS CLOB (10K)HEADВерифицирует HTTP-заголовок для требуемого ресурса посредством HTTP HEAD. Возвращается только HTTP-заголовок как CLOB-объект/XML.

Только для продукта DB2 for LUW: XML-документ httpHeader также может быть предоставлен как нативное XML-значение вместо использования CLOB.

Таблица 5. Сигнатуры helper-функций
НаименованиеТип возвратаСигнатураОписание
urlEncodeVARCHARurlEncode(text VARCHAR(2048), encoding VARCHAR(20)) RETURNS VARCHAR(4096)Helper-функция для URL-кодирования предоставленного текста text. Значение encoding задает символьный набор, который будет использоваться. Если присвоено значение NULL, то по умолчанию используется UTF-8.
urlDecodeVARCHARurlDecode(text VARCHAR(2048), encoding VARCHAR(20)) RETURNS VARCHAR(4096)Helper-функция для URL-декодирования предоставленного текста text. Значение encoding задает символьный набор, который будет использоваться. Если присвоено значение NULL, то по умолчанию используется UTF-8.
base64EncodeVARCHARbase64Encode(text VARCHAR(2732) FOR BIT DATA) RETURNS VARCHAR(4096)Helper-функция для Base64-кодирования предоставленных двоичных данных, возвращающая эти данные в виде закодированной Base64-строки
base64DecodeVARCHAR FOR BIT DATAbase64Decode(text VARCHAR(4096)) RETURNS VARCHAR(2732) FOR BIT DATAHelper-функция для Base64-декодирования предоставленных Base64-данных, возвращающая эти данные в двоичном виде.

Загрузка

ОписаниеИмяРазмер
REST UDF пакет загрузки1download.zip---

Заметка

  1. Файл download.zip был обновлен – в него включено исправление для устранения несовместимости с продуктом DB2 for z/OS V8. Если это исправление не установлено, пользователь может столкнуться со следующей ошибкой в среде DB2 for z/OS: java.lang.NoClassDefFoundError:com.ibm.db2.jcc.DB2Xml/

Ресурсы

Научиться

Получить продукты и технологии

  • Загрузите бесплатную ознакомительную версию продукта IBM DB2 for Linux, UNIX, and Windows.
  • Теперь у вас есть возможность использовать DB2 бесплатно. Загрузите DB2 Express-C, бесплатную версию редакции DB2 Express Edition для сообщества, которая имеет такие же базовые функции по работе с данными, что и DB2 Express Edition и способна служить прочным фундаментом для создания и развертывания приложений.

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Information Management, Web-архитектура, SOA и web-сервисы, XML
ArticleID=937016
ArticleTitle=HTTP-доступ к RESTful-сервисам из DB2: Задаваемые пользователем REST-функции для DB2
publish-date=07102013