最近我一直试图使用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,但我确实希望过滤,例如,将数字作为名字发送。
实现这个/过滤传入表单数据的最佳方法是什么? 谢谢。
根据您发布的屏幕截图,您没有将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数据。