簡體   English   中英

使用HotChocolate拼接時,如何重命名遠程模式的類型?

[英]When Stitching using HotChocolate, How Can A Remote Schema's Type Be Renamed?

這是我的場景。 我有一個 GraphQL 網關,它使用以下代碼將十幾個遠程模式拼接在一起:

services.AddHttpClient(schema.TypeName, c => c.BaseAddress = new Uri(schema.Url));
public virtual void Add(IRequestExecutorBuilder builder, bool ignoreRootTypes = true)
{
    var type = this.GetType();
    builder.AddRemoteSchema(type.Name, ignoreRootTypes);
}

假設遠程模式是不可變的。 其中一個遠程模式有一個名為Name的類型。 這似乎是一個保留關鍵字,因為在拼接過程中,我得到了異常:

有關更多詳細信息,請查看Errors屬性。

  1. 已添加具有相同鍵的項目。 鍵:名稱

我可以通過將遠程服務的Name類型修改為類似PersonName的類型來更正此錯誤,但是,正如我上面提到的,這些外部模式應該是不可變的。

有沒有辦法在網關級別拋出此異常之前重命名受限類型?

添加對RenameType的調用:

public virtual void Add(IRequestExecutorBuilder builder, bool ignoreRootTypes = true)
{
    var type = this.GetType();
    builder.AddRemoteSchema(type.Name, ignoreRootTypes);
    builder.RenameType("Name", "PersonName", type.Name);
}

這會將來自遠程模式的傳入類型重命名為其他名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM