NodeJS - 无法确定/验证传入的表单数据,因为它们都被视为字符串

问题描述 投票:0回答:1

最近我一直试图使用Postman来验证“表单数据”请求。 我注意到每次我尝试验证/过滤传入的变量时,它们都是字符串,即使这些字符串值可以转换为数字/布尔值等 - 因为我想验证它们是什么“真实”类型是。 在尝试寻找解决方案时,我尝试使用“typeof”和以下依赖项:“validator”,“express-validator”。我必须提到身体解析器到位:

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”是字符串的开头(“Doe”),它在尝试解析第一个字母后崩溃了。

问题是,我确实想要将传入的请求解析为JSON,但我确实希望过滤,例如,将数字作为名字发送。

实现这个/过滤传入表单数据的最佳方法是什么? 谢谢。

编辑: 添加了描述请求的图片,除了显示的标题之外没有其他标题。 enter image description here

json node.js string form-data body-parser
1个回答
0
投票

根据您发布的屏幕截图,您没有将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数据。

© www.soinside.com 2019 - 2024. All rights reserved.