Ответы выше: правильно , но как человек, который работал с масштабируемыми и поддерживаемыми API, я бы рекомендовал стандартизировать процесс проверки вашего API с использованием JSON Schemas для определения ожидаемый ввод и AJV для проверки этих схем.
Пример использования:
const Ajv = require('ajv');
const express = require('express');
const app = express();
app.get('/api', (req, res) => {
// define precisely the expected shape of the request
const schema = {
type: 'object',
properties: {
name: { type: 'string' },
age: { type: 'string' },
club: { type: 'string' }
},
required: ['name', 'age', 'club']
}
// validate the request
const ajv = new Ajv();
const valid = ajv.validate(schema, req.query);
if(!valid) res.status(400).send(ajv.errors);
// request is valid. Do whatever
res.send(req.query);
})
app.listen(8080, () => console.log('Server listening on port 8080'));
Ответ на /api
:
[
{
"keyword": "required",
"dataPath": "",
"schemaPath": "#/required",
"params": {
"missingProperty": "name"
},
"message": "should have required property 'name'"
}
]
Ответ на /api?name=messi&age=10&club=barcelona
:
{
"name": "messi",
"age": "10",
"club": "barcelona"
}
Да, требуется немного больше кода, но, поверьте мне, это путь, если вы хотите подготовить свое приложение к сложной и масштабируемой проверке API.