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.
- 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.