我想使用/v1/eval
端点运行一个第三方提供的JS示例。但是,JS有一些特性需要在使用之前修复。下面是一个示例:
以下脚本执行curl -X POST -d @script.sjs http://host:8000/v1/eval
失败,其中script.sjs
包含:
javascript=
// Please execute this modified query for me ...
const addNumbers = (a, b) => {
console.log(`Adding ${a} + ${b}`)
return a + b
}
addNumbers(2, 3)
当通过curl发送脚本时,脚本被解释为一行,因此会出现很多错误:
- 单行注解无效
- 所有行必须以分号结尾(用户可能不提供)
- 尽管Marklogic支持完整的ES6,但仍不接受某些字符
- 例如,上述示例中的粗箭头(
=>
和+
)失败。
因此,要使脚本运行,我需要对脚本进行大量修改,如下所示:
javascript=
/* Please execute this query for me */
function multiplyNumbers (a, b) {
console.log(`Adding ${a} + ${b}`);
return a * b
}
multiplyNumbers(2, 3);
是否有任何curl设置可以防止数据“损坏”?
或
是否可以使用bash修改脚本内容,以便/v1/eval
端点可以正确解释它?
1条答案
按热度按时间mnemlml81#
您可以从SJS模块中删除
javascript=
,让它只是代码,然后将SJS模块的内容作为javascript
参数发送,并使用--data-urlencode
选项而不是-d
,让curl对文件的内容进行urlencode,而不必担心重新格式化或对内容进行urlencode。curl --anyauth -i -X POST --data-urlencode javascript@script.sjs http://localhost:8000/v1/eval