2017-07-08 63 views
1

我試圖實現使用.NET實現一個GraphQL服務器 - Conventions參數重載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的當前實現看起來像忽略重載,生成的圖不包含字符串參數,第二個查詢失敗。

有誰知道這是否可以用當前版本來完成? 如果不是我需要看的擴展點在哪裏?

回答

3

約定不支持方法重載,因爲在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 
    } 
} 
+0

是,經調查,你是正確的。當前的graphql規範不允許在服務器上實現我想要的類型。 – OrdinaryOrange