Приветствую Джаваскрипт..

Итак, недавно я столкнулся с проблемой на моей работе инженером-программистом. Проблема в том, что запрос данных от клиента находится в форме 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.

Вот и все ! Спасибо ! Я надеюсь, что это помогает !