我想创建突变 api,其中输入可以是不同的类型,比如我们在类型中拥有的接口。我知道我们不能在输入类型中有接口,我想知道我们如何在一个输入中支持多种输入类型。为了解释这个问题,我使用了一个虚拟示例:
input CreateCatInput{
id: String
name: String
}
input CreateDogInput{
id: String
name: String
breed: String
}
input CreateElephantInput{
id: String
name: String
weight: String
}
现在,如果我们想为它编写 api,我将不得不为每种类型编写 api
createCat(input: CreateCatInput!)
createDog(input: CreateDogInput!)
createElephant(input: CreateElephantInput!)
我用这种方法遇到的问题是:
- 我将不得不编写很多 api,假设如果我支持 20 种动物,那么我将不得不编写 20 个创建 api。但是我不喜欢用户有这么多的 api,我希望用户应该看到很少的 api。
- 假设我们支持 20 种动物,用户如何知道所有动物都支持什么,他们必须在 API Explorer 中查看我们支持的所有 api。
我正在寻找的解决方案是我只有一个 api :
createAnimal(input: CreateAnimalInput!)
由于目前没有接口支持,公司如何实现可以是多种类型的输入?如何定义输入,以便我只能在 api 中提供一个输入?
我已阅读此建议,但它涉及定义注释,我目前正在尝试。我想看看其他人是如何解决这个问题的。
编辑:看起来现在在这个主题上做了很多工作https://github.com/graphql/graphql-spec/pull/733并且该功能将很快推出。