Проверка и отправка пользовательских ошибок для GraphQL в. net Core - PullRequest
0 голосов
/ 28 января 2020

Я работаю над GraphQL впервые. Я создал следующую мутацию с помощью https://code-maze.com/graphql-mutations/

public class CarInputType : InputObjectGraphType<Car>
{
    public CarInputType()
    {
        Name = "carInput";
        Field(x => x.Model);
        Field(x => x.Make, true);
    }
}

public class CarType : ObjectGraphType<Car>
{
    public CarType()
    {
        Field(x => x.Model);
        Field(x => x.Make, true);
        Field(x => x.Color, true);
    }
}
public class Car
{
    public string Model{ get; set; }
    public string Make{ get; set; }
    public string Color{ get; set; }
}
public class Mutation : ObjectGraphType
{

    public Mutation(ICarRepository carRepository)
    {
        Field<CarType>(
            "createCar",
            arguments: new QueryArguments(
                new QueryArgument<NonNullGraphType<CarInputType>> { Name = "car" }
            ),
            resolve: context =>
            {
                var car= context.GetArgument<Car>("car");
                //trying to validate the car make here..but didn't work
                return carRepository.AddCar(car);
            }
       );
    }
  }

Итак, моя мутация выглядит так:

mutation($car:carInput!){
  createCar(car: $car){
    model,
    make
  }
}

Аргумент запроса:

{
  "car":{
    "make":"Toyota",
    "model":"Camry"
  }
}

Есть ли способ, которым я мог бы проверить QueryArgument так, как аргумент запроса 'make' должен принимать только значения "Toyota" и "Honda". Попытка проверить его внутри распознавателя, но не сработала, потому что код там не дошел. Кроме того, после проверки есть ли способ отправить пользовательские ошибки в следующем формате:

"{
  "status":"error",
  "errormessage":"Only accepts Toyota and Honda as the Make right now"
}"

(Я не смог найти код валидатора для javascript, но не смог найти ни одной простой для понимания справки для. net)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...