Могу ли я отправлять запросы GraphQL с помощью httpclient в .NET corer?

Можно ли отправлять запросы graphQL со стандартным httpclient в ядре .NET? Когда я пытаюсь отправить свой запрос с помощью client.post, я получаю "Expected { or [ as first syntax token."

Как я могу отправлять запросы GraphQL с помощью httpclient. Без использования библиотеки (например, GraphQLHttpClient и т. Д.)

2 ответа

Вот пример вызова конечной точки GraphQL с помощью HttpClient в .net Core:

      public async Task<string> GetProductsData(string userId, string authToken)
{
    var httpClient = new HttpClient
    {
        BaseAddress = new Uri(_apiUrl)
    };

    httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", authToken);

    var queryObject = new
    {
        query = @"query Products {
            products {
            id
            description
            title
            }
        }",
        variables = new { where = new { userId = userId } }//you can add your where cluase here.
    };

    var request = new HttpRequestMessage
    {
        Method = HttpMethod.Post,
        Content = new StringContent(JsonConvert.SerializeObject(queryObject), Encoding.UTF8, "application/json")
    };

    using (var response = await httpClient.SendAsync(request))
    {
        response.EnsureSuccessStatusCode();
        var responseString = await response.Content.ReadAsStringAsync();
        return responseString;
    }
}

Понятно: просто добавьте «запрос» как объект json. Так:

      {"query" : "query { __schema { queryType { name } mutationType { name } types { name } directives { name } } }"}

В .NET вы можете использовать это в сообщении HTTP (не забудьте экранировать строку из двойных кавычек

      private static string myquery = "{ \"query\" : \"query { __schema { queryType { name } mutationType { name } types { name } directives { name } } }\" }";
Другие вопросы по тегам