Fastify и проверка схемы Ajv
Я пытаюсь проверить параметр строки запроса "hccid", как показано ниже. Похоже, проверка не работает для меня. Кто-нибудь может увидеть, что мне не хватает?
const fastify = require('fastify')({
ajv: {
removeAdditional: true,
useDefaults: true,
coerceTypes: true
}
});
const schema = {
querystring: {
hccid: { type: 'string' }
}
};
// Declare a route
fastify.get('/hello', {schema}, function (request, reply) {
const hccid = request.query.hccid;
reply.send({ hello: 'world' })
});
// Run the server!
fastify.listen(3000, function (err) {
if (err) throw err
console.log(`server listening on ${fastify.server.address().port}`)
});
Так что с этим кодом я должен получить исключение проверки схемы, когда я вызываю службу с полным новым запросом abc
как я показал ниже
http://localhost:3000/hello?abc=1
но не было ошибки. Я получил ответ {"hello":"world"}
Я также попытался удалить queryparam все вместе http://localhost:3000/hello
и я все еще получил {"hello":"world"}
очевидно, проверка не работает. Чего не хватает в моем коде? любая помощь будет оценена.
2 ответа
Эта структура схемы решила мою проблему. На всякий случай, если кто-то захочет проверить это, если они столкнутся с подобной проблемой.
const querySchema = {
schema: {
querystring: {
type: 'object',
properties: {
hccid: {
type: 'string'
}
},
required: ['hccid']
}
}
}
Согласно документам, вы можете использовать или для форматирования ввода из URL-адреса.
Пожалуйста, обратитесь к приведенному выше ответу в качестве примера.
Проверка
Внутренняя проверка маршрута зависит от который является высокопроизводительным валидатором схемы JSON. Проверить ввод очень просто: просто добавьте нужные поля в схему маршрута, и все готово!
Поддерживаемые проверки:
body
: проверяет тело запроса, если это метод POST, PUT или PATCH.querystring
илиquery
: проверяет строку запроса.params
: проверяет параметры маршрута.headers
: проверяет заголовки запроса.
[1] Источник: https://www.fastify.io/docs/latest/Validation-and-Serialization/#validation.
[2] Ajv @ v6 : Ajv v6,https://www.npmjs.com/package/ajv/v/6.12.6