简介
validate-graphql-page-args
是一个基于 graphql
分页规范的参数校验库,用于校验前端传递的 graphql 分页查询参数是否符合标准。
安装
可以用 npm 进行安装:
npm install validate-graphql-page-args
使用
validate-graphql-page-args
暴露出一个名为 validatePageArgs
的方法,该方法接收一个 GraphQLResolveInfo
对象和一个 object
对象,返回一个校验结果对象。
-- -------------------- ---- ------- ------ - ---------------- - ---- ----------------------------- ----- -------- - - ------ --- ------ ------ ----- --- ------- ------ -- ----- -------------- - ---------------------- ---------- ---------------------------- -- - ------ ------ -------- ----------- -- ------------ --- ---- -- --------- ---------- -
其中,info
是 GraphQLResolveInfo
类型的参数,该参数通常在 graphql
的 resolver 方法中被注入。pageInfo
则是前端传递的分页参数对象,它应该符合以下规范:
- first: 非负整数,表示要查询的第一页的大小(可选)
- after: 符合
cursor
格式的字符串,表示要查询的第一页的游标(可选) - last: 非负整数,表示要查询的最后一页的大小(可选)
- before: 符合
cursor
格式的字符串,表示要查询的最后一页的游标(可选)
其中,cursor
格式是一个任意字符串,通常用来表示某个节点的唯一标识,这个标识应该能够反映出这个节点在原始数据中的位置。
validatePageArgs
方法会对传入的 pageInfo
对象进行校验,如果校验通过则返回一个 valid
属性为 true
的结果对象;否则返回一个 valid
属性为 false
的结果对象,并在 message
属性中提供出错信息。
校验规则
以下是 validate-graphql-page-args
会对传入的参数进行校验的规则:
first
和after
必须同时存在,或者都不存在last
和before
必须同时存在,或者都不存在first
和last
不能同时存在after
和before
不能同时存在
校验结果
如果校验通过,则 validatePageArgs
返回一个对象,其 valid
属性为 true
。否则,valid
属性为 false
,message
属性包含出错的具体信息。
示例代码
function resolve(root, args, ctx, info) { const validateResult = validatePageArgs(info, args.page); if (!validateResult.valid) { throw new Error(validateResult.message); } // 查询数据的逻辑 }
在 graphql
的 resolver 中,我们可以先对前端传递的分页参数进行校验,如果校验成功则继续查询数据。如果校验失败,则可以通过抛出一个 Error
来报错。
总结
validate-graphql-page-args
可以帮助我们进行前端传递的 graphql 分页参数的校验,避免了因为前端传递的参数不规范而导致的错误。使用它可以让我们在进行 graphql 查询时更加安全和可靠。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600556fa81e8991b448d3e07