在GraphQL中重用一组参数
我有一组通用过滤器,它们是GraphQLAPI中一系列不同类型的参数 我希望能够一次性声明参数及其类型,并重用此逻辑,而不是将其添加到每个查询中 只是想知道实现这一目标的最佳方式是什么?graphql规范是否适合此用例,或者我是否可以将参数集声明为字符串并将其添加到查询中?比如:在GraphQL中重用一组参数,graphql,Graphql,我有一组通用过滤器,它们是GraphQLAPI中一系列不同类型的参数 我希望能够一次性声明参数及其类型,并重用此逻辑,而不是将其添加到每个查询中 只是想知道实现这一目标的最佳方式是什么?graphql规范是否适合此用例,或者我是否可以将参数集声明为字符串并将其添加到查询中?比如: let filterArgs=“timeStart:$startTime,timeEnd:$endTime,someFilter:$someFilter” let filterTypes=“$startTime,Dat
let filterArgs=“timeStart:$startTime,timeEnd:$endTime,someFilter:$someFilter”
let filterTypes=“$startTime,DateTime!,$endTime:DateTime,$someFilter:String!”
干杯在客户端,你真的没有什么其他可以做的了。这实际上更多的是模式设计的问题。将字段上的多个参数转换为单个输入对象类型通常是有意义的。当这些相同的参数跨模式中的多个字段进行复制时,这就更有意义了。比较
type Query {
foo(baz: String, qux: String, quuz: String, corge: String, grault: String, garply: String, waldo: String, fred: String, plugh: String, xyzzy: String): Int!
bar(baz: String, qux: String, quuz: String, corge: String, grault: String, garply: String, waldo: String, fred: String, plugh: String, xyzzy: String): Int!
}
与
将所有这些常用参数简化为单个类型不仅可以减少架构中的重复,还可以简化客户端的查询:
query SomeQuery($input: FilterInput) {
foo(input: $input)
}
谢谢,丹尼尔!帮助我提高了对GraphQL的理解!
type Query {
foo(input: FilterInput): Int!
bar(input: FilterInput): Int!
}
input FilterInput {
baz: String
qux: String
quuz: String
corge: String
grault: String
garply: String
waldo: String
fred: String
plugh: String
xyzzy: String
}
query SomeQuery($input: FilterInput) {
foo(input: $input)
}