Access Web Resources באופן אסינכרוני
ביצוע שיחות למשאבי אינטרנט עלול לגרום להמתנה ארוכה עבור המשתמש. כדי להימנע מחסימת רצף התגובות של ממשק המשתמש (UI), באפשרותך לגשת למשאבי אינטרנט באופן אסינכרוני.
משאבי אינטרנט
משאב אינטרנט הוא כל הנתונים או השירות הנגישים דרך האינטרנט. הדבר כולל דפי אינטרנט, ממשקי תיכנות יישומים (API), תמונות, סרטוני וידאו וסוגי תוכן אחרים. יישומים מאחזרים משאב אינטרנט או מקיים איתם אינטראקציה באמצעות פרוטוקולי אינטרנט רגילים, כגון Hypertext Transfer Protocol (HTTP) או HTTP Secure (HTTPS).
מקרה שימוש נפוץ אחד לגישה למשאבי אינטרנט הוא אחזור נתונים משרת או שירות מרוחק. הדבר יכול לכלול הבאת נתוני JSON או XML, הורדת קבצים או אינטראקציה עם ממשקי API של אינטרנט. לדוגמה, ייתכן שתרצה לגשת ל- API של מזג אוויר כדי לקבל את תנאי מזג האוויר הנוכחיים עבור מיקום מסוים, או שתרצה להוריד תמונה מכתובת URL.
ממשקי API של Representational State Transfer (REST) הם דרך פופולרית לגשת למשאבי אינטרנט, והם מספקים דרך תקנית לקיים אינטראקציה עם שירותי אינטרנט באמצעות שיטות HTTP כגון GET, POST, PUT ו- DELETE. ממשקי REST API נמצאים בשימוש נרחב בפיתוח אינטרנט, באפליקציות למכשירים ניידים וב שירותי ענן כדי לאפשר חילופי נתונים ושילוב בין פלטפורמות שונות. ממשקי REST API מחזירים בדרך כלל נתונים בתבנית JavaScript Object Notation (JSON), שהיא קלה וקלה לניתוח.
ב- C#, באפשרותך להשתמש בכיתה HttpClient כדי לבצע בקשות HTTP למשאבי אינטרנט.
שימוש ב- HttpClient עבור קריאות API אסינכרוני
HttpClient הכיתה מהווה חלק מ System.Net.Http מרחב השמות, המספק מחלקות לשליחת בקשות HTTP ולקבלת תגובות HTTP.
HttpClient הכיתה נועדה לשמש באופן אסינכרוני, ומאפשרת לך לבצע שיחות שאינן מחסימה למשאבי אינטרנט.
המחלקה HTTPClient כוללת את השיטות הסינכרונות הבאות:
-
GetAsync: שליחת בקשת GET ל- URI שצוין והחזרת התגובה. -
PostAsync: שליחת בקשת POST ל- URI שצוין עם התוכן שצוין והחזרת התגובה. -
PutAsync: שליחת בקשת PUT ל- URI שצוין עם התוכן שצוין והחזרת התגובה. -
DeleteAsync: שליחת בקשת DELETE ל- URI שצוין והחזרת התגובה. -
SendAsync: שליחת הודעת בקשת HTTP והחזרת התגובה.
דוגמת הקוד הבאה מדגימה כיצד HttpClient להשתמש בכיתה כדי לבצע בקשת GET אסינכרונית ל- REST API ולעבד את התגובה:
// 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; }
}
בדוגמה זו, המחלקה HttpClient משמשת לשליחת בקשת GET אסינכרונית ל- API של PetStore. התגובה נקראת כמחרוזת ועריכה בסידרה ברשימת אובייקטים Pet המשתמשים בכיתה JsonSerializer . לאחר מכן הקוד עובר דרך רשימת החיות ומציג את הפרטים שלהם. המשפט using מבטיח שהמופע HttpClient יסולסול כראוי לאחר השימוש, וישחרר את כל המשאבים שהוא מחזיק.
HttpClient הכיתה מיועדת לשימוש חוזר עבור בקשות מרובות, HttpClient ולכן מומלץ ליצור מופע יחיד של היישום ולהשתמש בו לאורך כל היישום. פעולה זו מסייעת בשיפור הביצועים וניהול המשאבים על-ידי שימוש חוזר בחיבורי הרשת המשמשים כברירת מחדל.
תקציר
ביחידה זו, למדת כיצד לגשת למשאבי אינטרנט באופן אסינכרוני באמצעות HttpClient הכיתה. למדת גם כיצד לבצע קריאות API אסינכרוניות כדי לאחזר נתונים מ- REST API ולעבד את התגובה. על-ידי שימוש בטכניקות תיכנות אסינכרוני, באפשרותך לשפר את יכולת התגובה של האפליקציות שלך ולספק חוויית משתמש טובה יותר.
נקודות עיקריות
- ניתן לגשת למשאבי אינטרנט באופן אסינכרוני כדי להימנע מחסימת הליך המשנה של ממשק המשתמש.
- ממשקי REST API מספקים דרך תקנית לקיים אינטראקציה עם שירותי אינטרנט.
-
HttpClientהכיתה ב- C# מיועדת לשימוש אסינכרוני, ומאפשרת שיחות אי-חסימה למשאבי אינטרנט. -
HttpClientהכיתה כוללת שיטות אסינכרוניות כגוןGetAsync,PostAsync,PutAsync,DeleteAsync, ו-SendAsync. - יש לעשות שימוש חוזר
HttpClientבמופע יחיד של בקשות מרובות לשיפור הביצועים וניהול המשאבים.