Я хотел бы просто проверить синтаксис тела запроса POST, который мой сервер получает по маршруту '/ route':
- проверить, является ли формат тела JSON,
- проверка правильности синтаксиса тела (без пропущенных скобок или кавычек).
/// Мой код ///
app.use(express.json());
function isJsonString(str) {
try {
console.log('JSON Parsing function...');
JSON.parse(str);
}
catch (e) {
console.log("Error : " + e);
return false;
}
return true;
}
app.post('/route', function(req, res) {
var isJsonString_result = isJsonString(req.body);
console.log(isJsonString_result);
if(isJsonString_result === true){
console.log('OK continue');
res.status(200).send('ok');
}
else{
console.log('Wrong body format');
res.status(404).send('ko');
}
})
/// Результаты ///
Вот результаты, которые я получаю, когда отправляю POST-запрос от Postman с этим JSON (отправляется с заголовком «Content-Type»: «application / json»):
{
"key1": "value1",
"key2": "value2"
}
/// Результат почтальона ///
Ко
/// Console.log ///
Функция синтаксического анализа JSON ...
Ошибка: SyntaxError: неожиданный токен o в JSON в позиции 1 false
Неправильный формат тела
=> объяснение, по-видимому, в том, что "JSON.parse" не может проанализировать существующий JSON ...
Итак, первый вопрос: как проверить правильность тела в формате JSON?
и с этим другим JSON с пропущенными кавычками (всегда отправляется с заголовком «Content-Type»: «application / json»):
{
"key1": "value1",
"key2: "value2"
}
/// Результат почтальона ///
Длинное сообщение об ошибке, начинающееся с "SyntaxError: Неожиданный токен v в JSON в позиции 32"
/// Console.log ///
То же самое:
SyntaxError: неожиданный токен v в JSON в позиции 32 в JSON.parse
()
...
...
=> Не знаю, как решить эту проблему, если много запросов POST с неправильным синтаксисом тела, мой «журнал» потенциально может очень быстро расти.
Не могли бы вы помочь мне с обоими вопросами?
Спасибо!