2

我正在尝试使用 .Net 实现来实现 GraphQL 服务器 -约定

在服务器上,我希望我的架构是这样的

public class StarWarsQuery
{
    public IEnumerable<Droid> Droids()
    {
        return droidRepository.GetAllDroids();
    }

    public Droid Droids(string name)
    {
        return droidRepository.GetDroidByName(name);
    }
}

public class Droid
{
    string name { get; set;}
}

以便来自客户端的查询看起来像这样

{
   Droids{
     name
   }
}

或者

{
   Droids(name:"super droid"){
     name
   }
}

Conventions的当前实现看起来忽略了重载,生成的图不包含字符串参数,第二个查询失败。

有谁知道这是否可以用当前版本完成?如果不是,我需要查看的扩展点在哪里?

4

1 回答 1

4

约定不支持方法重载,因为在 GraphQL 中无法表示它 - 据我所知,您不能有两个具有相同名称和不同签名的字段。

如果您将代码更改为以下内容,则应该没问题:

public class StarWarsQuery
{
    public IEnumerable<Droid> Droids()
    {
        return droidRepository.GetAllDroids();
    }

    public Droid Droid(string name)
    {
        return droidRepository.GetDroidByName(name);
    }
}

public class Droid
{
    string name { get; set;}
}

这样,您可以运行以下查询:

{
  droids{ # note also the lowercase 'd' here
    name
  }
  droid(name:"super droid"){
    name
  }
}
于 2017-07-13T09:43:59.897 回答