我正在使用Oracle REST Data Services构建REST API(在APEX UI中称为RESTful Services)。
我只需使用application/x-www-form-urlencoded
就可以在PL / SQL处理程序中的POST请求中读取:paramter_name
个参数。但是,它们似乎不适用于PUT请求。 The documentation表示它应该与POST,PUT和DELETE操作一起使用。但我只能让它与POST一起工作。
对于非POST请求是否根本不支持(并且文档有误导性),或者我做错了什么?
hr/
test
PUT
PL/SQL
Yes
来源:
begin
:output := :input;
end;
参数:
Name | Bind Variable Name | Access Method | Source Type | Parameter Type
--------|-----------------------|---------------|---------------|---------------
output | output | OUT | Response Body | String
我尝试的请求是:
curl -X PUT -H "Content-Type: application/x-www-form-urlencoded" -d 'input=test' https://apex.oracle.com/pls/apex/redacted/hr/test
我只是得到一个空洞的回应。
但是,如果我将处理程序更改为Method:POST
,请尝试以下请求:
curl -X POST -H "Content-Type: application/x-www-form-urlencoded" -d 'input=test' https://apex.oracle.com/pls/apex/redacted/hr/test
我得到了正确的回答:
{"output":"test"}
答案 0 :(得分:0)
目前ORDS仅支持json PUT参数。您可以直接参考第一级。如果你需要嵌套的json,那么你需要解析:body(转换为clob)并使用APEX_JSON(Apex 5.0)
示例:
curl -H "Content-Type: application/json" -X PUT -d '{"test1":"xyz","test2":"123", "test3":"asd"}' https://test.example.com/ords/slrv/oliTest/data
{"test1":"xyz", "test2":"123", "test3":"asd","test4":""}
后端代码(类型为plsql)
begin
owa_util.status_line (200, '', false);
owa_util.mime_header ('application/json', true);
htp.prn ('
{"test1":"' || :test1 || '", "test2":"' || :test2 || '", "test3":"' || :test3 || '","test4":"' || :test4 || '"}
');
end;