La meilleure pratique de l'API REST Call dans l'API REST dans le C #
Introduction
Cet article examine comment appeler l'API REST en C # et résoudre le problème des blocs anormaux indépendants.
Code et problèmes d'origine
Le code d'origine utilise la classe pour envoyer une demande de message à l'API REST. Cependant, le bloc anormal semble être contourné, ce qui entraîne des messages d'erreur ne peut pas être affiché.
Utilisation du plan d'amélioration de la bibliothèque client ASP.NET API ASP.NET HttpWebRequest
Ce plan d'amélioration utilise la classe
, simplifiant le processus d'utilisation des services basés sur HTTP et de la réponse de traitement. Il contient un traitement anormal explicite et utilise des instructionspour s'assurer que l'instance
est correctement libérée. L'utilisation de méthodes asynchrones évite également la programmation. Une sortie d'informations d'erreur plus claire est ajoutée au code, et il est recommandé d'effectuer un traitement d'erreur de niveau supérieur.<code class="language-csharp">using System; using System.Collections.Generic; using System.Net.Http; using System.Net.Http.Headers; namespace ConsoleProgram { public class DataObject { public string Name { get; set; } } public class Class1 { private const string URL = "https://sub.domain.com/objects.json"; private string urlParameters = "?api_key=123"; static void Main(string[] args) { using (HttpClient client = new HttpClient()) // 使用using语句自动释放资源 { client.BaseAddress = new Uri(URL); // 添加JSON格式的Accept头。 client.DefaultRequestHeaders.Accept.Add( new MediaTypeWithQualityHeaderValue("application/json")); try { // 获取数据响应。 使用异步方法避免阻塞 var response = client.GetAsync(urlParameters).Result; if (response.IsSuccessStatusCode) { // 解析响应正文。 var dataObjects = response.Content.ReadAsAsync<IEnumerable<DataObject>>().Result; foreach (var d in dataObjects) { Console.WriteLine("{0}", d.Name); } } else { Console.WriteLine($"HTTP请求失败: 状态码 {(int)response.StatusCode} - {response.ReasonPhrase}"); // 更高级的错误处理,例如记录日志或抛出自定义异常 } } catch (HttpRequestException ex) { Console.WriteLine($"HTTP请求异常: {ex.Message}"); // 更高级的错误处理,例如记录日志或显示用户友好的错误信息 } catch (Exception ex) { Console.WriteLine($"发生未知异常: {ex.Message}"); // 记录日志或显示用户友好的错误信息 } } } } }</code>
Remarque: HttpClient
using
HttpClient
pour plusieurs demandes. Suivez le "Mode Disser". La meilleure pratique consiste à utiliser l'instruction
ou à libérer manuellement le client une fois toutes les demandes terminées. L'instruction a été utilisée dans cet exemple.HttpClient
) peut améliorer les performances du programme et éviter de bloquer le thread principal. HttpClient
using
using
Cette réponse révisée fournit une solution plus robuste et efficace, abordant les exceptions potentielles et l'amélioration de la mobilisation de la consultation de la consultation de l’intégration de l’intégration de l’intégration de l’intégrationCe qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!