تعداد ویدئو | 90 |
---|---|
زمان دوره | 03:20:58 |
مترجم | پرووید |
ناظر ترجمه | پرووید |
دوبلر | پرووید |
ناظر دوبلاژ | پرووید |
سایت منتشر کننده | پلوال سایت |
آموزش استفاده از HttpClient و API های .NET Core یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته ی آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه ی فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته ی آموزشی استفاده از API ها در NET Core. با استفاده از کلاس HttpClient است که با نام اصلی Using HttpClient to Consume APIs in .NET Core از شرکت Pluralsight منتشر شده است.
دات نت 2.0 شامل کلاس WebClient برای ارتباط با web server با استفاده از پروتکل HTTP می باشد. با این حال کلاس WebClient محدودیت هایی داشت. دات نت 4.5 شامل کلاس HttpClient برای غلبه بر محدودیت WebClient است. در اینجا ما از کلاس HttpClient در برنامه کنسول برای ارسال داده ها و دریافت داده ها از Web API که روی سرور محلی IIS میزبانی می شود، استفاده می کنیم. شما می توانید از HttpClient در برنامه های دیگر .NET نیز مانند MVC Web اپلیکیشن و windows form اپلیکیشن و windows service اپلیکیشن و… استفاده کنید.
بیایید ببینیم چگونه از Web API برای استفاده از HttpClient در برنامه کنسول استفاده کنیم.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
namespace MyWebAPI.Controller
{
public class StudentController : ApiController
{
public IHttpActionResult GetAllStudents(bool includeAddress = false)
{
IList<StudentViewModel> students = null;
using (var ctx = new SchoolDBEntities())
{
students = ctx.Students.Include("StudentAddress").Select(s => new StudentViewModel()
{
Id = s.StudentID,
FirstName = s.FirstName,
LastName = s.LastName,
Address = s.StudentAddress == null || includeAddress == false ? null : new AddressViewModel()
{
StudentId = s.StudentAddress.StudentID,
Address1 = s.StudentAddress.Address1,
Address2 = s.StudentAddress.Address2,
City = s.StudentAddress.City,
State = s.StudentAddress.State
}
}).ToList<StudentViewModel>();
}
if (students.Count == 0)
{
return NotFound();
}
return Ok(students);
}
public IHttpActionResult PostNewStudent(StudentViewModel student)
{
if (!ModelState.IsValid)
return BadRequest("Not a valid data");
using (var ctx = new SchoolDBEntities())
{
ctx.Students.Add(new Student()
{
StudentID = student.Id,
FirstName = student.FirstName,
LastName = student.LastName
});
ctx.SaveChanges();
}
return Ok();
}
public IHttpActionResult Put(StudentViewModel student)
{
if (!ModelState.IsValid)
return BadRequest("Not a valid data");
using (var ctx = new SchoolDBEntities())
{
var existingStudent = ctx.Students.Where(s => s.StudentID == student.Id).FirstOrDefault<Student>();
if (existingStudent != null)
{
existingStudent.FirstName = student.FirstName;
existingStudent.LastName = student.LastName;
ctx.SaveChanges();
}
else
{
return NotFound();
}
}
return Ok();
}
public IHttpActionResult Delete(int id)
{
if (id <= 0)
return BadRequest("Not a valid studet id");
using (var ctx = new SchoolDBEntities())
{
var student = ctx.Students
.Where(s => s.StudentID == id)
.FirstOrDefault();
ctx.Entry(student).State = System.Data.Entity.EntityState.Deleted;
ctx.SaveChanges();
}
return Ok();
}
}
}
مرحله 1:
ابتدا یک console application در Visual Studio 2013 برای دسکتاپ ایجاد کنید.
مرحله 2:
کنسول NuGet Package Manager را از TOOLS -> NuGet Package Manager -> Package Manager Console باز کرده و دستور زیر را اجرا کنید.
Install-Package Microsoft.AspNet.WebApi.Client
مرحله 3:
اکنون، یک کلاس مدل Student ایجاد کنید زیرا ما Student object را به API وب خود ارسال و دریافت می کنیم.
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
}
مثال زیر یک درخواست HTTP GET به Student Web API ارسال می کند و نتیجه را در کنسول نمایش می دهد.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net.Http;
using System.Net.Http.Headers;
namespace HttpClientDemo
{
class Program
{
static void Main(string[] args)
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:60464/api/");
//HTTP GET
var responseTask = client.GetAsync("student");
responseTask.Wait();
var result = responseTask.Result;
if (result.IsSuccessStatusCode)
{
var readTask = result.Content.ReadAsAsync<Student[]>();
readTask.Wait();
var students = readTask.Result;
foreach (var student in students)
{
Console.WriteLine(student.Name);
}
}
}
Console.ReadLine();
}
}
}
بیایید مثال بالا را مرحله به مرحله بررسی کنیم:
ابتدا ما یک object از HttpClient ایجاد کرده و آدرس اصلی Web API خود را اختصاص داده ایم. متد GetAsync درخواست http GET را به آدرس اینترنتی مشخص شده ارسال می کند. متد GetAsync که یک asynchronous است Task را برمی گرداند. Task.wait اجرا را به حالت تعلیق در می آورد تا زمانیکه متد GetAsync اجرا را به اتمام برساند و نتیجه ای را نشان دهد.
پس از اتمام اجرا، نتیجه Task را با استفاده از Task.result دریافت می کنیم که HttpResponseMessage است. اکنون، می توانید وضعیت پاسخ http را با استفاده از IsSuccessStatusCode بررسی کنید. محتوای content را با استفاده از روش ReadAsAsync بخوانید. بنابراین می توانید درخواست http GET را با استفاده از آبجکت HttpClient ارسال کرده و نتیجه را پردازش کنید.
به طور مشابه، می توانید درخواست HTTP POST را با استفاده از متد PostAsAsync به HttpClient ارسال کرده و نتیجه را مانند درخواست GET پردازش کنید. مثال زیر درخواست http POST را به Web API ما ارسال می کند. این Student object را به عنوان json قرار می دهد و پاسخ را برمی گرداند.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net.Http;
using System.Net.Http.Headers;
namespace HttpClientDemo
{
class Program
{
static void Main(string[] args)
{
var student = new Student() { Name = "Steve" };
var postTask = client.PostAsJsonAsync("student", student);
postTask.Wait();
var result = postTask.Result;
if (result.IsSuccessStatusCode)
{
var readTask = result.Content.ReadAsAsync();
readTask.Wait();
var insertedStudent = readTask.Result;
Console.WriteLine("Student {0} inserted with id: {1}", insertedStudent.Name, insertedStudent.Id);
}
else
{
Console.WriteLine(result.StatusCode);
}
}
}
}
فصل اول: مقدمه این دوره آموزشی
فصل دوم: ارتباط برقرار کردن با یک API با استفاده از کلاس HttpClient
فصل سوم: هندل کردن انواع مختلفی از Integration (CRUD) ها
فصل چهارم: بهبود عملکرد با Partial Updates
فصل پنجم: بهبود عملکرد حافظه با استفاده از Stream ها
فصل ششم: پشتیبانی از کنسل کردن
فصل هفتم: بهبود HttpClient و مدیریت Instance با استفاده از HttpClientFactory
فصل هشتم: هندل کردن Fault ها وError ها
فصل نهم: گسترش دادن HttpClient با استفاده از HttpMessageHandler های سفارشی
فصل دهم: تست واحد با HttpClient
تمامی حقوقی مادی و معنوی متعلق به گروه آموزشی پرووید است.
نقد و بررسیها
هیچ دیدگاهی برای این محصول نوشته نشده است.