Приветствую Джаваскрипт..
Итак, недавно я столкнулся с проблемой на моей работе инженером-программистом. Проблема в том, что запрос данных от клиента находится в форме json со строковым/числовым значением, а также в форме json с частично значением юникода. И в моем приложении nodejs я использую функцию express.json() для анализа данных моего запроса.
Проще говоря, значение Юникода, представляющее символы, числа или символы. Вы можете увидеть список символов юникода здесь https://en.wikipedia.org/wiki/List_of_Unicode_characters
Имейте в виду, что изначально запрос был таким:
{ "data": "Heaven \u0026 Hell" }
который & напоминает символ &.
Дело в том, что моему приложению нужны необработанные данные, как в json выше. И bodyParser фактически автоматически анализирует и конвертирует этот юникод в символ &.
{ "data": "Heaven & Hell" }
Но что мне нужно, так это «\ u0026» (мне это нужно для хеширования кода hmac). поэтому после поиска в Google я нашел ответ. Нам просто нужно добавить немного кода в нашу функцию express.json(). Давайте посмотрим на пример ниже!
app.use(express.json({ verify: (req, res, buf) => { req.rawBody = buf.toString(); } }));
Объяснение :
- При запуске приложения используйте express.json() в качестве промежуточного программного обеспечения (обычно в app.js).
- В параметре вы можете указать конфигурацию объекта для получения необработанных данных (с функцией проверки)
- Преобразуйте данные буфера в строку, используя метод toString()
- И затем вы можете сохранить его в переменной с именем «req.rawBody».
- В этой переменной будет сохранен юникод «u0026».
- После всего этого вы можете получить к нему доступ в своем APIS.
Вот и все ! Спасибо ! Я надеюсь, что это помогает !