#javascript #node.js #joi
Вопрос:
У меня есть конечная точка, которая принимает имя пользователя в качестве строки запроса, но это имя пользователя может иметь # в начале, поэтому в Дзеи я получил это
{
"code": 1021,
"message": "Request data model validation has failed",
"id": "276ba99a-2abc-4505-b66a-dad2a8ger5",
"explanation": [
"`username` is not allowed to be empty"
]
}
как я могу сделать так, чтобы моя строка запроса принимала # в начале, используя Joi?
Ответ №1:
Вы должны закодировать свой параметр, прежде чем добавлять его в URL-адрес.
const url = 'https://example.com?username=#allia';
const response = await fetch(encodeURIComponent(url));
Или вы можете заменить #
на #
Комментарии:
1. Возможно, вы захотите дать ему общее решение о кодировании с
encodeURIComponent
помощью или что-то в этом роде.2. @Martial Спасибо, я знаю, но мне интересно, могу ли я сделать это через Joi или есть какой-либо другой способ, поэтому я не буду принуждать потребителя моего api кодировать параметр перед отправкой
3. @MatJ Я ничего не знаю о Дзеи. Вот почему я не упомянул
encodeURIComponent
об этом, потому что, возможно, у Дзеи есть свой собственный процесс кодирования.4. @allia С тех пор
#
интерпретируется в URL, если пользователь хочет отправить данные с помощью этого символа, ему все равно придется его закодировать.5. @Martial, без проблем.
joi
речь идет о проверке объекта, в любом случае обработка входных данных должна выполняться отдельно от проверки.