如何解决如何重塑GraphQL响应?
我有一个GraphQL查询,如下所示:
type Query {
getProfile(userId: ID!): UserProfile
}
type UserProfile {
userId: ID!
name: String!
email: String!
street: String!
city: String
country: String!
postal: String!
}
但是,似乎我只限于使用这样的别名来修改查询的响应:
query {
getProfile(userId: "12345") {
userId
name
email
streetName: street
city
country
postalCode: postal
}
}
我想重塑响应,这样我就不必通过对象的数据映射器放置响应。例如,我可能想重塑响应,使其看起来像这样:
{
userId: 12345,name: "John",email: "john@smith.com",address: {
streetName: "my street name",city: "WA",country: "US",postalCode: "54321"
}
}
在这种情况下,我在响应中添加了一个address
附加级别。我是否必须在GraphQL服务器上声明一个专门为此形状的type
?如果我无权执行此操作,例如这是第三方GraphQL API,该怎么办?
感觉就像我仍然面临着同样的问题,即使用常规REST API时必须在UI中重新映射响应。就我而言,仅使用别名更改字段名称通常是不够的。
如何构造GraphQL查询以重塑响应以返回不同的形状?
解决方法
我认为您可以将自己的架构改进为:
type UserProfile {
userId: ID!
name: String!
email: String!
address: Address
}
type Address {
street: String!
city: String
country: String!
postal: String!
}
然后,您可以为用户数据和地址信息设置不同的解析器
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。