Käytä verkkoresursseja asynkronisesti
Kutsujen tekeminen verkkoresursseihin voi aiheuttaa käyttäjille pitkiä odotusaikoja. Jos haluat välttää käyttöliittymän säikeen käytön, voit käyttää verkkoresursseja asynkronisesti.
Verkkoresurssit
Verkkoresurssi on mikä tahansa tieto tai palvelu, joka on käytettävissä Internetissä. Tämä sisältää verkkosivut, ohjelmointirajapinnat, kuvat, videot ja muuntyyppisen sisällön. Sovellukset hakevat tai käsittelevät verkkoresursseja käyttämällä tavallisia verkkoprotokollia, kuten HTTP-protokollaa tai HTTPS-suojattua HTTPS-protokollaa.
Yksi yleinen verkkoresurssien käytön käyttötapaus on tietojen noutaminen etäpalvelimelta tai palvelusta. Niitä voivat olla esimerkiksi JSON- tai XML-tietojen noutaminen, tiedostojen lataaminen tai verkon ohjelmointirajapintojen käyttäminen. Haluat ehkä käyttää sään ohjelmointirajapintaa, jotta saat tietyn sijainnin nykyiset sääehdot, tai haluat ehkä ladata kuvan URL-osoitteesta.
Representational State Transfer (REST) -ohjelmointirajapinnat ovat suosittu tapa käyttää verkkoresursseja, koska ne tarjoavat standardoidun tavan toimia verkkopalvelujen kanssa KÄYTTÄMÄLLÄ HTTP-menetelmiä, kuten GET, POST, PUT ja DELETE. REST-ohjelmointirajapintoja käytetään laajalti verkkokehityksessä, mobiilisovelluksissa ja pilvipalveluissa tietojen vaihdon ja integroinnin mahdollistamiseksi eri ympäristöjen välillä. REST-ohjelmointirajapinnat palauttavat tiedot yleensä JavaScript Object Notation (JSON) -muodossa, joka on kevyt ja helppo jäsentää.
C#: HttpClient ssä voit tehdä HTTP-pyyntöjä verkkoresursseihin -luokan avulla.
HttpClient-komennon käyttö asynkronisille API-kutsuille
Luokka HttpClient on osa System.Net.Http nimitilaa, joka tarjoaa luokkia HTTP-pyyntöjen lähettämiseen ja HTTP-vastausten vastaanottamiseen. Luokka HttpClient on suunniteltu käytettäväksi asynkronisesti, jolloin voit tehdä estottomia kutsuja verkkoresursseihin.
Luokka HTTPClient sisältää seuraavat asynkroniset menetelmät:
-
GetAsync: Lähettää GET-pyynnön määritettyyn URI:hen ja palauttaa vastauksen. -
PostAsync: Lähettää POST-pyynnön määritettyyn URI:iin määritetyn sisällön kanssa ja palauttaa vastauksen. -
PutAsync: Lähettää PUT-pyynnön määritettyyn URI-rajapintaan määritetyn sisällön kanssa ja palauttaa vastauksen. -
DeleteAsync: Lähettää DELETE-pyynnön määritettyyn URI-tunnille ja palauttaa vastauksen. -
SendAsync: Lähettää HTTP-pyyntöviestin ja palauttaa vastauksen.
Seuraava koodiesimerkki näyttää, miten voit käyttää HttpClient luokkaa asynkronisen GET-pyynnön tekemiseen REST-ohjelmointirajapintaan ja käsitellä vastauksen:
// 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; }
}
Tässä esimerkissä luokkaa HttpClient käytetään asynkronisen GET-pyynnön lähettämiseen PetStore-ohjelmointirajapintaan. Vastaus luetaan merkkijonona ja se poistetaan objektiluettelosta Pet , joka käyttää -luokkaa JsonSerializer . Koodi iteroi sitten lemmikkieläimien luettelon läpi ja näyttää niiden tiedot. - using lauseke varmistaa, että HttpClient esiintymä hävitetään oikein käytön jälkeen, vapauttaen kaikki sen käyttämät resurssit.
Luokka HttpClient on suunniteltu käytettäväksi uudelleen useissa pyynnöissä, joten on suositeltavaa luoda yksittäinen HttpClient -esiintymä ja käyttää sitä koko sovelluksessa. Tämä auttaa parantamaan suorituskykyä ja resurssien hallintaa käyttämällä pohjana olevia verkkoyhteyksiä uudelleen.
Yhteenveto
Tässä osiossa olet oppinut käyttämään verkkoresursseja asynkronisesti HttpClient luokan avulla. Opit myös tekemään asynkronisia ohjelmointirajapintakutsuja tietojen noutamiseksi REST-ohjelmointirajapinnasta ja käsittelemään vastauksen. Käyttämällä asynkronisia ohjelmointitekniikoita voit parantaa sovelluksiesi vasteaikaa ja parantaa käyttökokemusta.
Avainasiat
- Verkkoresursseja voi käyttää asynkronisesti, jotta käyttöliittymää ei estetä.
- REST-ohjelmointirajapinnat tarjoavat standardoidun tavan käyttää verkkopalveluita.
- C#-
HttpClientluokka on suunniteltu asynkroniseen käyttöön, jolloin verkkoresursseihin voidaan tehdä ei-estokutsuja. - Luokka
HttpClientsisältää asynkroniset menetelmät, kutenGetAsync,PostAsync,PutAsync,DeleteAsyncjaSendAsync. - Yksittäistä -
HttpClientesiintymää tulee käyttää uudelleen useille pyynnöille suorituskyvyn ja resurssien hallinnan parantamiseksi.