Heim > Backend-Entwicklung > C++ > Wie kann man mit Ausnahmen ordnungsgemäß umgehen, wenn REST -API -Aufrufe in C#aufgerufen werden?

Wie kann man mit Ausnahmen ordnungsgemäß umgehen, wenn REST -API -Aufrufe in C#aufgerufen werden?

DDD
Freigeben: 2025-01-25 14:36:11
Original
489 Leute haben es durchsucht

How to Properly Handle Exceptions When Making REST API Calls in C#?

Die beste Praxis des Rest -API -Aufrufs in der Rest -API in der C#

Einführung

In diesem Artikel wird erläutert, wie die Rest -API in C#aufgerufen wird und das Problem der unaussprechlichen abnormalen Blöcke löst.

ursprünglicher Code und Probleme

Der ursprüngliche Code verwendet die -Klasses, um eine Postanforderung an die Rest -API zu senden. Der abnormale Block scheint jedoch umgangen zu werden, was zu Fehlermeldungen nicht angezeigt werden kann.

Verwenden von ASP.NET -Web -API -Client -Bibliotheksverbesserungsplan

HttpWebRequest

Microsoft wird derzeit empfohlen, die ASP.NET -Web -API -Client -Bibliothek für den erholsamen Dienst zu verwenden. Das Folgende ist ein Verbesserungsplan für den angegebenen Code:

Dieser Verbesserungsplan verwendet die

-Klasse, die den Prozess der Verwendung von HTTP -basierten Diensten und Verarbeitungsantwort vereinfacht. Es enthält eine explizite abnormale Behandlung und verwendet

Aussagen, um sicherzustellen, dass die

-Schelle korrekt freigegeben wird. Die Verwendung asynchroner Methoden vermeidet auch die Programmierung. Dem Code wird eine Ausgabe für die Ausgabe von Fehlerinformationen für Fehler hinzugefügt, und es wird empfohlen, eine Fehlerverarbeitung mit höherer Ebene durchzuführen.
<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>
Nach dem Login kopieren

<:> Hinweis: HttpClient using HttpClient

Es wird empfohlen,

Instanzen für mehrere Anfragen wiederzuverwenden. Befolgen Sie den "Entsäulenmodus". Die beste Praxis besteht darin, die

-Antage zu verwenden oder den Kunden manuell freizugeben, nachdem alle Anfragen abgeschlossen sind. In diesem Beispiel wurde die -Anweisung verwendet.
  • Verwenden von asynchronen Methoden (HttpClient) kann die Programmleistung verbessern und vermeiden, den Hauptfaden zu blockieren.
  • Das Attribut blockiert, bis der asynchrone Betrieb abgeschlossen ist, die Kombination von
  • Blöcken kann jedoch effektiver Abnormalitäten verarbeiten. HttpClient using using Diese Revisionsantwort bietet eine robustere und effizientere Lösung, die potenzielle Ausnahmen und Verbesserung der Verbesserung des Aufgehensinginginginginginginginginginginginginginginging für das Verbesserung von Misserfolgerninginginginginginginging -Lösung darstellt, das das Traginginginginginginging -Zitieren des Zitierens zum Aufführen des Zitierensinginginginginginginginginginginginges zum Aufführen des Zitierensinginginginginginginginginging zum Aufführen des Zitierens des Zitierens des Zitierens des Zitierens des Zitierens des Zitierens des Zitierens des Zitierens macht das Erliegeninginginginginginginginginginginginginginginginging zum Verbesserunginginginginginginginginginging -Ausgang

Das obige ist der detaillierte Inhalt vonWie kann man mit Ausnahmen ordnungsgemäß umgehen, wenn REST -API -Aufrufe in C#aufgerufen werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage