GraphQL 字段的参数重载
argument overloads for GraphQL field
我正在尝试使用 .Net 实现来实现 GraphQL 服务器 - Conventions
在服务器上我希望我的模式是这样的
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 的当前实现似乎忽略了重载,生成的图形不包含字符串参数,第二个查询失败。
有谁知道当前版本是否可以做到这一点?
如果不是,我需要查看的扩展点在哪里?
约定不支持方法重载,因为在 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
}
}
我正在尝试使用 .Net 实现来实现 GraphQL 服务器 - Conventions
在服务器上我希望我的模式是这样的
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 的当前实现似乎忽略了重载,生成的图形不包含字符串参数,第二个查询失败。
有谁知道当前版本是否可以做到这一点? 如果不是,我需要查看的扩展点在哪里?
约定不支持方法重载,因为在 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
}
}