带有原始正文的HTTP POST请求到ORDS PL / SQL网关?

时间:2018-10-04 03:45:21

标签: oracle plsql oracle-ords plsql-gateway

我正在使用Oracle Database 12.2和ORDS 18.3。知道ORDS仅用于其PL / SQL网关部分而不是REST数据,是否可以向ORDS发出带有原始正文(没有使用application/x-www-form-urlencodedmultipart/form-data的参数的HTTP POST请求)服务部分。

在这种情况下,独立模式(使用Jetty)下的ORDS是HTTP服务器。发出请求的HTTP客户端是一些外部程序(邮递员,Java等)。

想法是发送JSON数据,但它可以是二进制数据,例如图像或其他内容。

看起来PL / SQL网关“只能”使用参数(或者根本没有参数,当然也没有主体)来调用过程。我能够使用多部分形式的虚拟参数发出请求,并以某种方式模拟我想要的内容(经过VARCHAR2CLOBBLOB测试),但我想知道是否有可能存在。

2 个答案:

答案 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-urlencodedmultipart/form-data)很有用

注意:您只能在PL / SQL块中取消引用:body:body_text参数 (如this documentation所示),因此您可以使用它之前,需要将其分配给局部变量。