我正在使用Oracle Database 12.2和ORDS 18.3。知道ORDS仅用于其PL / SQL网关部分而不是REST数据,是否可以向ORDS发出带有原始正文(没有使用application/x-www-form-urlencoded
或multipart/form-data
的参数的HTTP POST请求)服务部分。
在这种情况下,独立模式(使用Jetty)下的ORDS是HTTP服务器。发出请求的HTTP客户端是一些外部程序(邮递员,Java等)。
想法是发送JSON数据,但它可以是二进制数据,例如图像或其他内容。
看起来PL / SQL网关“只能”使用参数(或者根本没有参数,当然也没有主体)来调用过程。我能够使用多部分形式的虚拟参数发出请求,并以某种方式模拟我想要的内容(经过VARCHAR2
,CLOB
或BLOB
测试),但我想知道是否有可能存在。
答案 0 :(得分:1)
要回答我自己的问题,这是不可能的。我们必须使用参数和MIME类型application/x-www-form-urlencoded
(或multipart/form-data
)。
答案 1 :(得分:0)
您可以使用几个ORDS-specific bind variables (implicit parameters)。
:body
将返回一个BLOB。这可以用于任何东西,包括图像:body_text
将返回CLOB。这对于文本主体(例如JSON,XML或您指示的其他MIME类型(application/x-www-form-urlencoded
或multipart/form-data
)很有用注意:您只能在PL / SQL块中取消引用:body
或:body_text
参数 (如this documentation所示),因此您可以使用它之前,需要将其分配给局部变量。