Rumah > pembangunan bahagian belakang > C++ > Bagaimana Mengendalikan Pengecualian Dengan Betul Semasa Membuat Panggilan API REST dalam C#?

Bagaimana Mengendalikan Pengecualian Dengan Betul Semasa Membuat Panggilan API REST dalam C#?

DDD
Lepaskan: 2025-01-25 14:36:11
asal
489 orang telah melayarinya

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

Amalan terbaik panggilan API REST di API REST di C#

Pengenalan

Artikel ini membincangkan cara memanggil API REST dalam C#dan menyelesaikan masalah blok tidak normal yang tidak terkatakan.

kod asal dan masalah

Kod asal menggunakan kelas untuk menghantar permintaan pos ke API REST. Walau bagaimanapun, blok yang tidak normal seolah -olah dilangkau, mengakibatkan mesej ralat tidak dapat dipaparkan.

Menggunakan Pelan Penambahbaikan Perpustakaan API Web API ASP.NET

HttpWebRequest

Microsoft kini disyorkan untuk menggunakan perpustakaan klien API Web ASP.NET untuk menggunakan perkhidmatan RESTful. Berikut adalah pelan peningkatan untuk kod yang diberikan:

Pelan penambahbaikan ini menggunakan kelas

, memudahkan proses menggunakan perkhidmatan berasaskan HTTP dan respons pemprosesan. Ia mengandungi rawatan yang tidak normal dan penggunaan

untuk memastikan bahawa contoh

dibebaskan dengan betul. Penggunaan kaedah asynchronous juga mengelakkan pengaturcaraan. Output maklumat ralat yang lebih jelas ditambah ke kod, dan disyorkan untuk melakukan pemprosesan ralat peringkat yang lebih tinggi.
<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>
Salin selepas log masuk

<:> nota: HttpClient using HttpClient Adalah disyorkan untuk menggunakan semula

contoh untuk pelbagai permintaan.

Ikuti "Mode Bubur". Amalan terbaik ialah menggunakan pernyataan atau melepaskan pelanggan secara manual selepas semua permintaan selesai. Pernyataan telah digunakan dalam contoh ini.

    Menggunakan kaedah asynchronous (
  • ) boleh meningkatkan prestasi program dan mengelakkan menyekat benang utama. HttpClient Atribut akan menyekat sehingga operasi tak segerak selesai, tetapi gabungan blok
  • dapat mengendalikan keabnormalan dengan lebih berkesan.
  • HttpClient using Jawapan yang disiarkan ini memberikan penyelesaian yang lebih mantap dan cekap, menangani pengecualian yang berpotensi dan memperbaiki peningkatan yang menarik

Atas ialah kandungan terperinci Bagaimana Mengendalikan Pengecualian Dengan Betul Semasa Membuat Panggilan API REST dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan