Как запустить конечную точку v1/eval с помощью простого JavaScript

Я хочу запустить образец 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 скрипт интерпретируется как одна строка, поэтому многие вещи идут не так:

  • Однострочные комментарии не работают
  • Все строки должны заканчиваться точкой с запятой (пользователи не могут их указывать)
  • Некоторые символы не принимаются, несмотря на то, что Marklogic полностью поддерживает ES6.
    • например толстая стрелка (=> и +) из приведенного выше примера не работает.

Поэтому, чтобы запустить скрипт, мне нужно сильно изменить скрипт следующим образом:

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?

Предложите также пометить это как cURL. Запуск вашего примера через почтальона в соответствии с требованиями конечной точки (x-www-form-urlencoded, данные формы javascript и т. д.) работает нормально.

David Ennis - A Clever Llama 09.02.2023 13:39
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
1
69
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете удалить javascript= из модуля SJS и сделать его просто кодом. Затем отправьте содержимое модуля SJS в качестве параметра javascript и используйте параметр --data-urlencode вместо -d, чтобы получить curl urlencode содержимое файла, а не беспокоиться о переформатировании или urlencoding. Контент.

curl --anyauth -i -X POST --data-urlencode [email protected] http://localhost:8000/v1/eval

Другие вопросы по теме