简体   繁体   中英

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

Here's my scenario. I have a GraphQL gateway that stitches a dozen or so remote schemas together, using the following code:

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);
}

Assume that the remote schemas are immutable. One of the remote schemas has a type called Name . This appears to be a reserved keyword, because during stitching, I get the exception:

For more details look at the Errors property.

  1. An item with the same key has already been added. Key: Name

I can correct this error by modifying the Name type of the remote service to be something like PersonName , however, as I mentioned above, these external schemas should be immutable.

Is there a way to rename a restricted type before this exception is thrown at the Gateway level?

Add a call to 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);
}

This will rename the incoming type from your remote schema to something else.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM