39.35 MAKE_REST_REQUESTプロシージャのシグネチャ1
このプロシージャは、実際のRESTリクエスト(HTTP)を実行します。APEX_WEB_SERVICE.MAKE_REST_REQUEST
の直接呼出しとは異なり、このプロシージャはすべてのRESTデータ・ソース・パラメータを考慮します。
構文
APEX_PLUGIN_UTIL.MAKE_REST_REQUEST (
p_web_source_operation IN apex_plugin.t_web_source_operation,
p_request_body IN CLOB DEFAULT NULL,
p_bypass_cache IN BOOLEAN DEFAULT FALSE,
--
p_time_budget IN OUT NOCOPY NUMBER,
--
p_response IN OUT NOCOPY CLOB,
p_response_parameters IN OUT NOCOPY apex_plugin.t_web_source_parameters );
パラメータ
表39-51 APEX_PLUGIN_UTIL.MAKE_REST_REQUESTのパラメータ
パラメータ | 説明 |
---|---|
p_web_source_operation |
RESTデータ・ソース操作のプラグイン・メタデータ。 |
p_bypass_cache |
trueの場合、キャッシュは使用されません。 |
p_time_budget |
すべての行がフェッチされる場合(複数のHTTPリクエスト)、時間予算を使い果たしてエラーが発生するとプロセスが停止します。 |
戻り値
表39-52 APEX_PLUGIN_UTIL.MAKE_REST_REQUESTの戻り値
パラメータ | 説明 |
---|---|
p_time_budget |
リクエストが行われた後に残った時間予算 |
p_response |
受信したHTTP呼出しのレスポンス |
p_response_parameters |
RESTデータ・ソースのメタデータに基づく、受信したレスポンス・ヘッダーおよびCookie |
例
次の例は、APEX_PLUGIN_UTIL.MAKE_REST_REQUEST
を使用してHTTPリクエストを実行する簡略化されたプラグイン・フェッチ・プロシージャを示しています。
apex_plugin_util.make_rest_request (
p_plugin in apex_plugin.t_plugin,
p_web_source in apex_plugin.t_web_source,
p_params in apex_plugin.t_web_source_fetch_params,
p_result in out nocopy apex_plugin.t_web_source_fetch_result )
IS
l_web_source_operation apex_plugin.t_web_source_operation;
l_time_budget pls_integer := 60;
l_page_to_fetch pls_integer := 1;
l_continue_fetching boolean;
BEGIN
l_web_source_operation := apex_plugin_util.get_web_source_operation(
p_web_source => p_web_source,
p_db_operation => apex_plugin.c_db_operation_fetch_rows,
p_perform_init => true );
--
-- loop to execute HTTP request as long as we receive a response header named "moreRows"
-- with the value of "true". A time budget of (initially 60) seconds is passed as
-- IN OUT parameter to MAKE_REST_REQUEST; once that budget is exhausted, an error will
-- be raised.
--
while l_continue_fetching loop
p_result.responses.extend( 1 );
l_page_to_fetch := l_page_to_fetch + 1;
apex_plugin_util.make_rest_request(
p_web_source_operation => l_web_source_operation,
p_bypass_cache => false,
p_time_budget => l_time_budget,
--
p_response => p_result.responses( l_page_to_fetch ),
p_response_parameters => p_result.out_parameters );
l_continue_fetching := false;
for h in 1 .. apex_web_service.g_headers.count loop
IF apex_web_service.g_headers( h ).name = 'moreRows' and
apex_web_service.g_headers( h ).value = 'true'
THEN
l_continue_fetching := true;
exit;
END IF;
END LOOP;
END LOOP;
END plugin_fetch;
親トピック: APEX_PLUGIN_UTIL