Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / клиент в СУБД Oracle для потребления чужих REST-сервисов / 8 сообщений из 8, страница 1 из 1
15.10.2018, 12:11
    #39717495
Alexus12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
клиент в СУБД Oracle для потребления чужих REST-сервисов
Доброго времени суток!
Согласно этой статье
https://oracle-base.com/articles/misc/web-services-and-the-oracle-database#consuming-rest-json-web-services
авторConsuming REST JSON Web Services

Prior to Oracle 12c (12.1.0.2), the only way to consume JSON web services in the database was to make a HTTP request to the web service, then use PL/SQL string handling to pull the data apart. Oracle 12c (12.1.0.2) now includes server side JSON support, allowing you to store JSON in the databases and query it as if it were relational data. This functionality is described here.

It would also be possible to load Java-based JSON APIs into the database and call them from PL/SQL.
The APEX_WEB_SERVICE package provides a simple API for consuming REST web services, but it doesn't include any JSON-specific functionality, so it will simplify the process of getting the JSON document, but once you have it you will have to process it manually or with the 12c functionality mentioned previously. You can see an example of using the APEX_WEB_SERVICE package here.

Означает ли это, что простейший вариант решения задачи "создать клиента в СУБД Oracle для потребления чужих REST-сервисов" - это воспользоваться APEX_WEB_SERVICE package ?
...
Рейтинг: 0 / 0
15.10.2018, 15:00
    #39717682
Shtock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
клиент в СУБД Oracle для потребления чужих REST-сервисов
1. не ясно зачем
2. а если так пошло на utl_https в 10 раз легче. например так без всяких апексообёрток
...
Рейтинг: 0 / 0
15.10.2018, 22:19
    #39717855
Migelle
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
клиент в СУБД Oracle для потребления чужих REST-сервисов
Alexus12,

Может быть это то что нужно?

Oracle REST Data Services
...
Рейтинг: 0 / 0
16.10.2018, 14:16
    #39718170
Alexus12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
клиент в СУБД Oracle для потребления чужих REST-сервисов
Shtock,

1) зачем - чтобы постучаться из Oracle в чужой REST
2)
пример с APEX_WEB_SERVICE из https://oracle-base.com/articles/misc/apex_web_service-consuming-soap-and-rest-web-services#rest

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
CREATE OR REPLACE FUNCTION add_numbers (p_int_1  IN  NUMBER,
                                        p_int_2  IN  NUMBER)
  RETURN NUMBER
AS
  l_clob    CLOB;
  l_result  VARCHAR2(32767);
BEGIN

  -- Get the XML response from the web service.
  l_clob := APEX_WEB_SERVICE.make_rest_request(
    p_url         => 'http://oracle-base.com/webservices/add-numbers.php',
    p_http_method => 'GET',
    p_parm_name   => APEX_UTIL.string_to_table('p_int_1:p_int_2'),
    p_parm_value  => APEX_UTIL.string_to_table(p_int_1 || ':' || p_int_2)
  );

  -- Display the whole document returned.
  DBMS_OUTPUT.put_line('l_clob=' || l_clob);

  -- Pull out the specific value of interest.
  l_result := APEX_WEB_SERVICE.parse_xml(
    p_xml   => XMLTYPE(l_clob),
    p_xpath => '//answer/number/text()'
  );

  DBMS_OUTPUT.put_line('l_result=' || l_result);

  RETURN TO_NUMBER(l_result);
END;
/



пример по вашей ссылке
https://technology.amis.nl/2015/05/11/invoke-a-rest-service-from-plsql-make-an-http-post-request-using-utl_http-in-oracle-database-11g-xe/

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
create or replace
procedure publish_cinema_event
( p_room_id in varchar2
, p_party_size in number
) is
  req utl_http.req;
  res utl_http.resp;
  url varchar2(4000) := 'http://localhost:9002/cinema';
  name varchar2(4000);
  buffer varchar2(4000); 
  content varchar2(4000) := '{"room":"'||p_room_id||'", "partySize":"'||p_party_Size||'"}';
 
begin
  req := utl_http.begin_request(url, 'POST',' HTTP/1.1');
  utl_http.set_header(req, 'user-agent', 'mozilla/4.0'); 
  utl_http.set_header(req, 'content-type', 'application/json'); 
  utl_http.set_header(req, 'Content-Length', length(content));
 
  utl_http.write_text(req, content);
  res := utl_http.get_response(req);
  -- process the response from the HTTP call
  begin
    loop
      utl_http.read_line(res, buffer);
      dbms_output.put_line(buffer);
    end loop;
    utl_http.end_response(res);
  exception
    when utl_http.end_of_body 
    then
      utl_http.end_response(res);
  end;
end publish_cinema_event;



вроде бы первый пример проще второго, разве нет?
...
Рейтинг: 0 / 0
16.10.2018, 14:18
    #39718172
Alexus12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
клиент в СУБД Oracle для потребления чужих REST-сервисов
Migelle,
AFAIK ORDS служит для создания REST-сервисов и не может быть REST-клиентом для обращения к чужим REST-сервисам.
Если это не так - покажите пример.
...
Рейтинг: 0 / 0
16.10.2018, 15:16
    #39718220
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
клиент в СУБД Oracle для потребления чужих REST-сервисов
Alexus12вроде бы первый пример проще второгоПростота странный критерий. Тем более при сравнении GET и POST.
Кстати, некто Alexus12 в 2012 году удовлетворился запросом валют ЦБ кодом в сотню строк, хотя можно было получить то же самое селектом в три строки без plsql.

Если же идти по феншую, документация содержит главу про вызов вебсервисов. Но там обертка над джавой и тоже требует доустановки.
...
Рейтинг: 0 / 0
16.10.2018, 17:32
    #39718334
Alexus12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
клиент в СУБД Oracle для потребления чужих REST-сервисов
-2-,

Были времена, когда мы пользовались utl_file для чтения файлов, потом пришел черед External Table. 6 лет прошло, версия 12.1 дает новые возможности - почему не использовать?

Мой вопрос скорее про то, что из предложенных вариантов современнее и требует меньше движений в кодировании и поддержке (например, авторизация OAuth и т.п.)
...
Рейтинг: 0 / 0
16.10.2018, 18:07
    #39718365
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
клиент в СУБД Oracle для потребления чужих REST-сервисов
Alexus12версия 12.1 дает новые возможности - почему не использовать?
external table появился в 12.1 или апекса раньше не было?
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / клиент в СУБД Oracle для потребления чужих REST-сервисов / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]