Могу ли я отправлять запросы 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 } } }\" }";