Написание мутации graphql-client c#

Я пытался написать мутацию, но это дает мне ошибку.
в виде {"errors":[{"message":"Syntax Error: Expected $, found Name \"objects\"","locations":[{"line":2,"column":27}],"extensions":{"code":"GRAPHQL_PARSE_FAILED"}}]}

Код, который я написал, таков.

              [HttpGet("GraphDataCreate")]
        public async Task<dynamic> ReturnGraphDataCreate()
        {
            using var graphQLClient = new GraphQLHttpClient("https://api.spacex.land/graphql/", new NewtonsoftJsonSerializer());
            var trial = new GraphQLRequest
            {
                Query = @"
                query insert_users(objects: { name: $name, rocket: $rocket }) {
                    returning {
                        id
                        name
                        rocket
                        timestamp
                        twitter
                    }
                }",
                OperationName = "insert_users",
                Variables = new
                {
                    name = "AdiAntNam",
                    rocket = "SPUTNIK5V"
                }
            };
            var graphQLResponse = (object)(null);
            try
            {
                graphQLResponse = await graphQLClient.SendQueryAsync<dynamic>(trial);
            }
            catch (Exception ex)
            {
                var err = ex;
                string err1 = ex.Message;
                string err2 = ex.InnerException.Message;                
            }
            return Task.FromResult(graphQLResponse);
        }

Что же мне не хватает в этой части? Ссылка, которую я взял, взята отсюда.
https://github.com/graphql-dotnet/graphql-client

1 ответ

Проблема с примером заключается в том, что записанный тип данных трудно уследить. PersonAndFilms($id: ID)теперь ID - это тип данных, поэтому я предполагал, что это просто объявленное имя переменной, поэтому я был в замешательстве.

Итак, я написал это как запрос insert_users(objects: { name: $name, rocket: $rocket }) что было непонятно для GraphQL, поскольку для него требуется тип данных, поэтому я переписал свой запрос, как показано ниже.

      var trial = new GraphQLRequest
            {
                Query = @"
                mutation xyz($nameU: String, $rocketU: String)
                {
                    insert_users(objects: { name: $nameU , rocket: $rocketU }) 
                    {
                        returning 
                        {
                            id
                            name
                            rocket
                            timestamp
                            twitter
                        }
                    }
                }",
                OperationName = "xyz",
                Variables = new
                {
                    nameU = "AdiAntNam2",
                    rocketU = "SPUTNIK5V"
                }
            };

Теперь мутация xyz($nameU: String, $rocketU: String)он читает правильный тип данных. Пример верен кое-что в проекте, но сбивает с толку конечного пользователя, так как $id: ID не очень понятно, поэтому лучше использовать пример, как мой.

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