как использовать паскаль вместо верблюжьего в graphql dotnet - PullRequest
2 голосов
/ 25 апреля 2019

здесь у меня есть мутация, так как вы можете видеть имя параметра Product с заглавной буквой P, а имя поля CreateProduct с заглавной C, когда я выполняю эту мутацию из графического объекта, я должен написать имя поля на верблюжьем корпусе и также имя параметра, есть ли способ настроить graphql-dotnet для учета имен, как они написаны в коде?

 const string STR_Product = "Product";
    public Mutations(IProductService ProductService)
    {
        Name = "Mutation";
        Field<ProductType>(
            "CreateProduct",
            arguments: new QueryArguments(
                new QueryArgument<NonNullGraphType<ProductInputType>> { Name = STR_Product }),
            resolve: context =>
            {
                var ProductInput = context.GetArgument<ProductInput>(STR_Product);
                return ProductService.CreateAsync(ProductInput.Code, ProductInput.Name, ProductInput.Description);
                //return new ProductInputType();
            }
        );


    }
}

1 Ответ

1 голос
/ 25 апреля 2019

Вы можете передать IFieldNameConverter на ExecutionOptions. По умолчанию используется CamelCaseFieldNameConverter.

Для типов Introspection необходимы некоторые особые соображения, так как они должны быть верблюжьими в соответствии со спецификацией GraphQL.

GraphQL.NET предоставляет CamelCaseFieldNameConverter, PascalCaseFieldNameConverter и DefaultFieldNameConverter. Вы также можете написать свой собственный. Источник найден здесь .

using System;
using GraphQL;
using GraphQL.Types;

public class Program
{
  public static void Main(string[] args)
  {
    var schema = Schema.For(@"
      type Query {
        Hello: String
      }
    ");

    var json = schema.Execute(_ =>
    {
      _.Query = "{ Hello }";
      _.Root = new { Hello = "Hello World!" };
      _.FieldNameConverter = new DefaultFieldNameConverter();
    });

    Console.WriteLine(json);
  }
}
...