javascript - GraphQL 接口(interface)定义是否将其实现类型绑定(bind)到使用相同的输入参数 "signature"?

标签 javascript facebook-graph-api graphql

例如,GitHub API 声明了一个名为 Actor 的类型:

interface Actor {

    avatarUrl(size: Int): URI!

    login: String!

    resourcePath: URI!

    url: URI!
}
  1. 是否可以安全地假设每个实现 Actor 的类型都为字段 avatarUrl 采用一个 Int 输入参数?
  2. Actor 的子类型能否在 avatarUrl 字段上声明更多输入参数?

这是针对模式语言(客户端实现)的转译器,因此我不想做出任何可能在运行时失败的假设。

最佳答案

就 GraphQL.js 而言:

  1. 是的,任何实现 Actor 接口(interface)的类型都需要在其 avatarUrl 字段中包含 size 参数定义。

    需要明确的是,如果参数不是 NonNull,客户端仍然可以在查询中将其关闭。但是,它始终需要包含在类型定义中,否则 GraphQL 会报错。

  2. 是的,实现 Actor 的类型可以在该字段上声明超出接口(interface)要求的额外参数。我想这将是一种边缘情况,因为这些参数在返回接口(interface)的任何查询中都不可使用。但是返回特定类型而非接口(interface)的查询在技术上可以利用额外的参数。

关于javascript - GraphQL 接口(interface)定义是否将其实现类型绑定(bind)到使用相同的输入参数 "signature"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45806535/

相关文章:

javascript - 基于周限制日历

javascript - Google Sheet API 最小示例

facebook - 有没有办法通过 Graph API 戳?

Perl - Facebook 图形 API

express - 将 Stripe webhooks 与 graphql-yoga 和 Prisma 结合使用

javascript - 在 JavaScript 中相当于 Python 的 sys.exit()

javascript - 在 ASP.NET MVC 中使用 ajax 使用 CRUD 操作时,DataTable 插件不起作用

javascript - FaceBook IFrame 应用程序 : getLoginStatus fails only in Internet Explorer

reactjs - 如何使用react-apollo graphql确定突变加载状态

javascript - 从多对多关系中获取结果