[英]`StringOperationFilterInput` was already registered by another type, when stitching a remote GraphQL schema in 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
屬性。
- 已添加具有相同鍵的項目。 鍵:名稱
我可以通過將遠程服務的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.