【发布时间】:2023-01-09 15:47:06
【问题描述】:
我正在尝试将 Rest Countries API (restcountries.com) 公开为 GraphQL API。但是,我正在努力找出在 GraphQL 中创建类型定义以显示字段 name.nativeName 的最佳方法。
例如:如果您发送请求以获取有关加拿大等国家/地区的信息 (GET https://restcountries.com/v3.1/alpha/ca),那么我们将收到如下响应:
"name": {
"common": "Canada",
"official": "Canada",
"nativeName": {
"eng": {
"official": "Canada",
"common": "Canada"
},
"fra": {
"official": "Canada",
"common": "Canada"
}
}
}
正如您在上面的响应中看到的那样,nativeName 字段是一个具有两个内部字段 eng 和 fra 的对象。但是,如果我发送请求以获取另一个国家/地区,例如芬兰 (GET https://restcountries.com/v3.1/alpha/fi),响应将如下所示:
"name": {
"common": "Finland",
"official": "Republic of Finland",
"nativeName": {
"fin": {
"official": "Suomen tasavalta",
"common": "Suomi"
},
"swe": {
"official": "Republiken Finland",
"common": "Finland"
}
}
}
但这一次,对于芬兰,nativeName 具有不同的字段 fin 和 swe。换句话说,nativeName 的内部字段会根据我们查询的国家/地区而变化。
那么我如何在我的 GraphQL API 中创建适当的 typeDef 和解析器来支持这种情况,字段名称不可预测?到目前为止,这是我的 typeDef,但我不知道如何为 nativeName 创建类型。
type Query {
all: [Country!]!
}
type Country {
name: CountryName!
}
type CountryName {
common: String!
official: String!
nativeName: ... # I have no idea how to map nativeName
}
有没有办法在这个类型变量中创建一个字段名称?任何人都可以建议一种使用nativeName 完成此 typeDef 的方法以及解析器的外观吗?
【问题讨论】:
标签: node.js typescript graphql