如何在Fastify中使用AJV验证URL路径参数verificationToken?
修复Fastify路径参数verificationToken验证失败问题
你的问题出在验证规则的字段选错了:你在schema里用querystring来定义验证,但实际verificationToken是URL路径参数(路由里的:verificationToken),不是URL末尾的查询参数(比如?token=xxx),所以Fastify找不到这个参数,才会一直提示“Verification token is required.”。
直接把schema里的querystring替换成params即可,路径参数对应的验证字段是params,修改后的代码如下:
export const UserActivationSchema = { schema : { params: { // 替换原有的querystring为params type : 'object', required : [ 'verificationToken' ], additionalProperties: false, properties : { verificationToken: { type: 'string' }, }, errorMessage : { properties: { verificationToken: 'Verification token is required.' }, required: 'Verification token is required.' } }, }, handler: activateEmail, }
路由定义保持不变:
fastify.get( '/activate/:verificationToken', UserActivationSchema );
修改后,Fastify会正确识别URL路径中的verificationToken参数,验证它是否为字符串且已提供,符合你的需求。
内容的提问来源于stack exchange,提问作者Marvix
相关产品推荐
相关产品推荐

