Oracle Rest Data 服务——自定义响应状态码
Oracle Rest Data service - customise response status code
默认情况下,ORDS 上所有成功的请求都以状态代码 200 好的响应。很好。
但有时我需要使用可自定义的错误代码进行响应,即。 201 , 202 等等
是否有任何模式可以根据 PUT 请求在 ORDS 上响应可自定义的错误代码?
问候
佩德罗
是的,绝对。
只需添加一个名为 X-ORDS-STATUS-CODE 的参数,并将其分配给一个 :bind,您将其作为 OUT RESPONSE HEADER,类型为 INTEGER。
然后在您的 POST 或 PUT 处理程序代码中,分配您想要的状态代码。
:status := 201;
所以...
这是完整的模块导出 -
-- Generated by Oracle SQL Developer REST Data Services 20.2.0.147.0319
-- Exported REST Definitions from ORDS Schema Version 20.2.0.r1611903
-- Schema: HR Date: Mon Jun 22 16:41:15 EDT 2020
--
BEGIN
ORDS.DEFINE_MODULE(
p_module_name => 'status',
p_base_path => '/status/',
p_items_per_page => 25,
p_status => 'PUBLISHED',
p_comments => NULL);
ORDS.DEFINE_TEMPLATE(
p_module_name => 'status',
p_pattern => '201',
p_priority => 0,
p_etag_type => 'HASH',
p_etag_query => NULL,
p_comments => NULL);
ORDS.DEFINE_HANDLER(
p_module_name => 'status',
p_pattern => '201',
p_method => 'POST',
p_source_type => 'plsql/block',
p_items_per_page => 0,
p_mimes_allowed => '',
p_comments => NULL,
p_source =>
'declare
new_record integer;
begin
insert into demo201 (column2) values (:words) returning column1 into new_record;
commit;
:status := 201;
end;'
);
ORDS.DEFINE_PARAMETER(
p_module_name => 'status',
p_pattern => '201',
p_method => 'POST',
p_name => 'X-ORDS-STATUS-CODE',
p_bind_variable_name => 'status',
p_source_type => 'HEADER',
p_param_type => 'INT',
p_access_method => 'OUT',
p_comments => NULL);
COMMIT;
END;
这里是 somewhat better example 我捕获异常并将 HTTP 响应状态代码设置为“400”
默认情况下,ORDS 上所有成功的请求都以状态代码 200 好的响应。很好。 但有时我需要使用可自定义的错误代码进行响应,即。 201 , 202 等等
是否有任何模式可以根据 PUT 请求在 ORDS 上响应可自定义的错误代码?
问候 佩德罗
是的,绝对。
只需添加一个名为 X-ORDS-STATUS-CODE 的参数,并将其分配给一个 :bind,您将其作为 OUT RESPONSE HEADER,类型为 INTEGER。
然后在您的 POST 或 PUT 处理程序代码中,分配您想要的状态代码。
:status := 201;
所以...
这是完整的模块导出 -
-- Generated by Oracle SQL Developer REST Data Services 20.2.0.147.0319
-- Exported REST Definitions from ORDS Schema Version 20.2.0.r1611903
-- Schema: HR Date: Mon Jun 22 16:41:15 EDT 2020
--
BEGIN
ORDS.DEFINE_MODULE(
p_module_name => 'status',
p_base_path => '/status/',
p_items_per_page => 25,
p_status => 'PUBLISHED',
p_comments => NULL);
ORDS.DEFINE_TEMPLATE(
p_module_name => 'status',
p_pattern => '201',
p_priority => 0,
p_etag_type => 'HASH',
p_etag_query => NULL,
p_comments => NULL);
ORDS.DEFINE_HANDLER(
p_module_name => 'status',
p_pattern => '201',
p_method => 'POST',
p_source_type => 'plsql/block',
p_items_per_page => 0,
p_mimes_allowed => '',
p_comments => NULL,
p_source =>
'declare
new_record integer;
begin
insert into demo201 (column2) values (:words) returning column1 into new_record;
commit;
:status := 201;
end;'
);
ORDS.DEFINE_PARAMETER(
p_module_name => 'status',
p_pattern => '201',
p_method => 'POST',
p_name => 'X-ORDS-STATUS-CODE',
p_bind_variable_name => 'status',
p_source_type => 'HEADER',
p_param_type => 'INT',
p_access_method => 'OUT',
p_comments => NULL);
COMMIT;
END;
这里是 somewhat better example 我捕获异常并将 HTTP 响应状态代码设置为“400”