Mengakses sumber daya web secara asinkron
Melakukan panggilan ke sumber daya web dapat mengakibatkan waktu tunggu yang lama bagi pengguna. Untuk menghindari pemblokiran utas antarmuka pengguna (UI), Anda dapat mengakses sumber daya web secara asinkron.
Sumber daya web
Sumber daya web adalah data atau layanan apa pun yang dapat diakses melalui internet. Ini termasuk halaman web, Antarmuka Pemrograman Aplikasi (API), gambar, video, dan jenis konten lainnya. Aplikasi mengambil atau berinteraksi dengan sumber daya web menggunakan protokol web standar seperti Hypertext Transfer Protocol (HTTP) atau HTTP Secure (HTTPS).
Salah satu kasus penggunaan umum untuk mengakses sumber daya web adalah mengambil data dari server atau layanan jarak jauh. Ini dapat mencakup pengambilan data JSON atau XML, mengunduh file, atau berinteraksi dengan API web. Misalnya, Anda mungkin ingin mengakses API cuaca untuk mendapatkan kondisi cuaca saat ini untuk lokasi tertentu, atau Anda mungkin ingin mengunduh gambar dari URL.
API Representational State Transfer (REST) adalah cara populer untuk mengakses sumber daya web, karena menyediakan cara standar untuk berinteraksi dengan layanan web menggunakan metode HTTP seperti GET, POST, PUT, dan DELETE. REST API banyak digunakan dalam pengembangan web, aplikasi seluler, dan layanan cloud untuk memungkinkan pertukaran data dan integrasi antara platform yang berbeda. REST API biasanya mengembalikan data dalam format JavaScript Object Notation (JSON), yang ringan dan mudah diurai.
Di C#, Anda dapat menggunakan HttpClient kelas untuk membuat permintaan HTTP ke sumber daya web.
Menggunakan HttpClient untuk panggilan API asinkron
Kelas HttpClient adalah bagian System.Net.Http dari namespace layanan, yang menyediakan kelas untuk mengirim permintaan HTTP dan menerima respons HTTP. Kelas HttpClient ini dirancang untuk digunakan secara asinkron, memungkinkan Anda melakukan panggilan nonblokir ke sumber daya web.
Kelas HTTPClient ini mencakup metode asinkron berikut:
-
GetAsync: Mengirim permintaan GET ke URI yang ditentukan dan mengembalikan respons. -
PostAsync: Mengirim permintaan POST ke URI yang ditentukan dengan konten yang ditentukan dan mengembalikan respons. -
PutAsync: Mengirim permintaan PUT ke URI yang ditentukan dengan konten yang ditentukan dan mengembalikan respons. -
DeleteAsync: Mengirim permintaan DELETE ke URI yang ditentukan dan mengembalikan respons. -
SendAsync: Mengirim pesan permintaan HTTP dan mengembalikan respons.
Sampel kode berikut menunjukkan cara menggunakan HttpClient kelas untuk membuat permintaan GET asinkron ke REST API dan memproses respons:
// Code that demonstrates the use of asynchronous REST API calls in C#
using System;
using System.ComponentModel;
using System.Net.Http;
using System.Threading.Tasks;
using System.Text.Json;
namespace ConsoleApp
{
class Program
{
static async Task Main(string[] args)
{
using (HttpClient client = new HttpClient())
{
try
{
// PetStore API endpoint
string url = "https://petstore.swagger.io/v2/pet/findByStatus?status=available";
HttpResponseMessage response = await client.GetAsync(url);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
//Console.WriteLine($"Response: {responseBody}");
// Deserialize the JSON response into a list of pets
var pets = JsonSerializer.Deserialize<List<Pet>>(responseBody);
// Iterate through the list of pets and display their details
foreach (var pet in pets)
{
//Console.WriteLine($"Pet ID: {pet.id}, Name: {pet.name}");
if (pet.id.ToString().Length > 4)
{
Console.WriteLine($"Pet ID: {pet.id}, Name: {pet.name}");
}
}
}
catch (HttpRequestException e)
{
Console.WriteLine($"Request error: {e.Message}");
}
}
}
}
}
public class Pet
{
public long id { get; set; }
public string name { get; set; }
public Category category { get; set; }
public List<string> photoUrls { get; set; }
public List<Tag> tags { get; set; }
public string status { get; set; }
}
public class Category
{
public long id { get; set; }
public string name { get; set; }
}
public class Tag
{
public long id { get; set; }
public string name { get; set; }
}
Dalam contoh ini, HttpClient kelas digunakan untuk mengirim permintaan GET asinkron ke API PetStore. Respons dibaca sebagai string dan dideserialisasi ke dalam daftar objek Pet menggunakan kelas JsonSerializer. Kode kemudian melakukan iterasi melalui daftar hewan peliharaan dan menampilkan detailnya. Pernyataan using memastikan bahwa instans HttpClient dikelola dengan benar setelah digunakan, melepaskan sumber daya apa pun yang dimilikinya.
Kelas HttpClient ini dirancang untuk digunakan kembali untuk beberapa permintaan, jadi disarankan untuk membuat satu instans HttpClient dan menggunakannya di seluruh aplikasi. Ini membantu meningkatkan performa dan manajemen sumber daya dengan menggunakan kembali koneksi jaringan yang mendasar.
Ringkasan
Dalam unit ini, Anda mempelajari cara mengakses sumber daya web secara asinkron menggunakan HttpClient kelas . Anda juga mempelajari cara melakukan panggilan API asinkron untuk mengambil data dari REST API dan memproses respons. Dengan menggunakan teknik pemrograman asinkron, Anda dapat meningkatkan respons aplikasi Anda dan memberikan pengalaman pengguna yang lebih baik.
Poin-poin penting
- Sumber daya web dapat diakses secara asinkron untuk menghindari pemblokiran thread UI.
- REST API menyediakan cara standar untuk berinteraksi dengan layanan web.
- Kelas
HttpClientdi C# dirancang untuk penggunaan asinkron, memungkinkan panggilan nonblokir ke sumber daya web. - Kelas ini
HttpClientmencakup metode asinkron sepertiGetAsync, ,PostAsyncPutAsync,DeleteAsync, danSendAsync. - Satu instans
HttpClientharus digunakan kembali untuk beberapa permintaan untuk meningkatkan performa dan manajemen sumber daya.