Как проверить пустые запросы с помощью GraphQL.NET?

Существует возможность отправки пустых запросов на сервер Graphql, реализованных с использованием GraphQL.NET и asp.net core 2.

Я попытался реализовать это с помощью asp.net core 2 action filter, но, похоже, он не работает.

// Startup.cs
public void ConfigureServices(IServiceCollection services)
{
    //services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
    services.AddMvc(options =>
    {
        options.Filters.Add(typeof (CheckModelForNullAttribute));
        options.Filters.Add(typeof (ValidateModelStateAttribute));
    }

    ).SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
// GraphQLController.cs

[Route("[controller]")]
public class GraphQLController : Controller
{
    private readonly IDocumentExecuter _documentExecuter;
    private readonly ISchema _schema;
    public GraphQLController(ISchema schema, IDocumentExecuter documentExecuter)
    {
        _schema = schema;
        _documentExecuter = documentExecuter;
    }

    [HttpPost]
    public async Task<IActionResult> Post([FromBody] GraphQLQuery query)
    {
        if (query == null)
        {
            throw new ArgumentNullException(nameof(query));
        }

        var inputs = query.Variables.ToInputs();
        var executionOptions = new ExecutionOptions{Schema = _schema, Query = query.Query, Inputs = inputs, UserContext = Request.Headers, //UserContext = new GraphQLUserContext { Headers = Request.Headers }
 };
        var result = await _documentExecuter.ExecuteAsync(executionOptions).ConfigureAwait(false);
        if (result.Errors?.Count > 0)
        {
            return BadRequest(result);
        }

        return Ok(result);
    }
}

// CheckModelForNullAttribute.cs

public class CheckModelForNullAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext context)
    {
        if (context.ActionArguments.Any(c => c.Value == null))
        {
            context.Result = new BadRequestObjectResult(context.ModelState);
        }
    }
}

// ValidateModelStateAttribute.cs

public class ValidateModelStateAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext context)
    {
        if (!context.ModelState.IsValid)
        {
            context.Result = new BadRequestObjectResult(context.ModelState);
        }
    }
}

введите описание изображения здесь

Может кто-нибудь помочь мне решить эту проблему?

0 ответов

Другие вопросы по тегам