NodeJS - Невозможно определить / проверить входящие данные формы, так как все они рассматриваются как строки - PullRequest
0 голосов
/ 14 сентября 2018

Недавно я пытался проверить запрос «form-data» с помощью Postman.
Я заметил, что каждый раз, когда я пытаюсь проверить / отфильтровать входящие переменные, все они являются строками, даже если онистроковые значения могут быть преобразованы в число / логическое значение и т. д. - Поскольку я хочу проверить, что это за «истинный» тип.
При попытке найти решение я попытался использовать «typeof», и следующеезависимости: " валидатор ", " экспресс-валидатор ".Я должен упомянуть, что body-parser на месте:

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

Они все «одурачены» и рассматривают переменные как строки.Я предполагаю, что это происходит из-за способа реализации body-parser, все они анализируются как JSON, что приводит к тому, что они являются строками.Предполагая это, я попытался использовать JSON.parse, который прекрасно работал (при попытке, например, на числе), но потерпел крах при использовании его на строках:

SyntaxError: Unexpected token D in JSON at position 0

«D» - началоstring ("Doe"), он потерпел крах при попытке разобрать первую букву.

Дело в том, что я хочу проанализировать входящий запрос как JSON, но я хочу фильтровать, числа, отправляемые как первыеимя, например.

Лучший способ добиться этого / отфильтровать входящие данные формы?
Спасибо.

Редактировать:
Добавлена ​​картинка с описанием запроса, без дополнительныхЗаголовки помимо показанных.enter image description here

1 Ответ

0 голосов
/ 14 сентября 2018

Согласно скриншоту, который вы разместили, вы не публикуете JSON на сервер. Это объясняет синтаксическую ошибку при разборе JSON.

То, что вы анализируете, это данные формы, формат которых отличается от формата JSON. Данные формы выглядят примерно так:

Content-Type: multipart/form-data;boundary="boundary" 

--boundary 
Content-Disposition: form-data; name="firstName" 

John 
--boundary 
Content-Disposition: form-data; name="lastName"

Doe
--boundary 
Content-Disposition: form-data; name="street"

Example Address

.... etc

Очевидно, что вышеупомянутое не имеет ничего общего с JSON.

Чтобы отправить JSON, вы должны выбрать «сырой» формат, а затем вставить свои собственные данные JSON, созданные вручную.

...