Consomateur WebAPI => Synchrone ou Asynchrone ?
Bonjour,
Je m'interroge sur ce qui est le plus préférable d'utiliser pour une récupération d'un flux JSON lors de la consommation d'une WebAPI Rest
1/ La méthode Asynchrone du style :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
static HttpClient client = new HttpClient();
static async Task<string> GetJson(string WebApiURL)
{
var request = new HttpRequestMessage(HttpMethod.Get, WebApiURL);
var response = await client.SendAsync(request);
try
{
response.EnsureSuccessStatusCode();
}
catch
{
return "";
}
string Json = await response.Content.ReadAsStringAsync();
return Json;
}
static async Task<HorsesProgram.Programme> GetHorsesProgram(string Journey)
{
string Content = await GetJson($"{Root.AbsoluteUri}7/programme/{Journey}");
HorsesProgram.Rootobject RootObject = JsonConvert.DeserializeObject<HorsesProgram.Rootobject>(Content)!;
return RootObject.programme!;
}
private static void Main(string[] args)
{
string Journey = "14112024";
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HorsesProgram.Programme HorsesPrograms = GetHorsesProgram(Journey).Result;
} |
Ou bien
2/ La méthode synchrone
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
private static string CallApi(string UrlApi)
{
var client = new RestClient(UrlApi);
var request = new RestRequest();
request.AddHeader("Accept", "application/json");
request.AddHeader("Content-Type", "application/json;charset=UTF-8");
var response = client.Get(request);
if (response.StatusCode == System.Net.HttpStatusCode.OK)
{
return response.Content!;
}
return "";
}
private void getPrograms()
{
string URL = $"{Root.AbsoluteUri}/7/programme/{DTP_Day.Value.ToString("ddMMyyyy")}";
string rawResponse = CallApi(URL);
HorsesProgram = null;
if (rawResponse != string.Empty) HorsesProgram = JsonConvert.DeserializeObject<HorsesProgram.Rootobject>(rawResponse)!;
} |
Vos informations et remarques sont les bien venues
Merci à vous.