Я хочу запустить образец JS, предоставленный третьей стороной, используя конечную точку /v1/eval
. Однако у 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.info(`Adding ${a} + ${b}`)
return a + b
}
addNumbers(2, 3)
При отправке через curl скрипт интерпретируется как одна строка, поэтому многие вещи идут не так:
=>
и +
) из приведенного выше примера не работает.Поэтому, чтобы запустить скрипт, мне нужно сильно изменить скрипт следующим образом:
javascript=
/* Please execute this query for me */
function multiplyNumbers (a, b) {
console.info(`Adding ${a} + ${b}`);
return a * b
}
multiplyNumbers(2, 3);
Есть ли какие-либо настройки завитка, которые могут предотвратить «повреждение» данных?
или
Есть ли способ изменить содержимое скрипта с помощью bash, чтобы его можно было правильно интерпретировать конечной точкой /v1/eval
?
Вы можете удалить javascript=
из модуля SJS и сделать его просто кодом. Затем отправьте содержимое модуля SJS в качестве параметра javascript
и используйте параметр --data-urlencode вместо -d, чтобы получить curl urlencode содержимое файла, а не беспокоиться о переформатировании или urlencoding. Контент.
curl --anyauth -i -X POST --data-urlencode [email protected] http://localhost:8000/v1/eval
Предложите также пометить это как cURL. Запуск вашего примера через почтальона в соответствии с требованиями конечной точки (x-www-form-urlencoded, данные формы javascript и т. д.) работает нормально.