پرش به مطلب اصلی

ASP.NET Core

مقدمه

در این فاز با فریم‌ورک ASP.NET Core آشنا خواهید شد.

برای آشنایی با تاریخچه و دلیل محبویت وب و مزایای آن نسبت به مدل‌های قدیمی ارتباط client-server مقاله From History of Web Application Development را مطالعه کنید.

مفاهیم اولیه

قبل از آنکه به سراغ ASP.NET Core برویم بهتر است به مفاهیم Http و Rest پرداخته شود.

Http چیست؟

پروتکل HTTP مخفف عبارت Hyper Text Transfer Protocol است و به ارتباط میان سرویس‌دهنده (server) و سرویس‌گیرنده (client) در وب می‌پردازد.

ارتباط بین clientها و serverها از طریق ارسال درخواست‌های http و دریافت پاسخ‌های http انجام می‌شود. به زبان ساده‌تر، http یک نوع قانون است که ارسال و دریافت اطلاعات بین client و server بر اساس آن انجام می‌شود.

برای آشنایی بهتر با Http می‌توانید از لینک‌های زیر کمک بگیرید:

RESTful Api

API یا Application Programming Interface (که به رابط برنامه‌نویسی کاربردی ترجمه می‌شود) مجموعه‌ای از قواعد و مکانیزم‌ها است که از طریق آن نرم‌افزارها و یا کامپوننت‌های مختلف یک برنامه با همدیگر ارتباط برقرار می‌کنند. منظور از رابط چیزی‌ است که دو شئ یا دو موجودیت مختلف را به همدیگر ربط می‌دهد. API می‌تواند داده‌هایی که شما برای نرم‌افزارتان نیاز دارید را از طریق یک فرمت مناسب به خروجی بفرستد و یا آن‌ را برگشت دهد. فرمت JSON و XML از این دست فرمت‌ها هستند. در این مطلب ما قصد داریم روی JSON تمرکز کنیم.

api schema

برای آشنایی بیشتر با RESTful api لینک‌های زیر را مطالعه کنید.

سلام به دنیای ASP.NET Core

ASP.NET Core یک چارچوب به زبان #C است که به وسیله آن می‌توانید یک سرور RESTful api راه‌اندازی کنید.

برای ساخت یک پروژه ASP.NET Core کافی است در ترمینال دستور زیر را وارد کنید:

dotnet new webapi

برای اجرا شدن اولین پروژه ASP.NET Core خود در ترمینال دستور زیر را وارد کنید:

dotnet run

پیش از اجرای برنامه خود برای اولین بار دستور dotnet dev-certs https --trust را در ترمینال اجرا کنید.

حال برای مشاهده خروجی کار آدرس https://localhost:<app port>/WeatherForecast را در مرورگر خود باز کنید.

همانگونه که مشاهده می‌کنید در خروجی یک لیست از داده‌های آب و هوایی وجود دارد که در پروژه پیش فرض ASP.NET Core تعریف شده است.

برای مشاهده لیست APIها و مطالعه مستنداتی ساده درباره هر API می‌توانید آدرس https://localhost:<appPort>/swagger را در مرورگر باز کنید.

Controller و Action Method

در یک پروژه ASP.NET Core درخواست‌های رسیده به سایت یا Web Application توسط کنترلرها پاسخ داده می‌شوند. پس به زبان خیلی ساده، کنترلرها به درخواست‌هایی که توسط کاربران ارسال می‌شوند پاسخ می‌دهند. کنترلرها کلاس‌هایی هستند که در فولدر Controllers قرار دارند. این کلاس‌ها با کلمه Controller به اتمام می‌رسند و از کلاس Controller یا ControllerBase ارث بری می‌کنند.

هر متدی با دسترسی عمومی (Public) در کنترلر، به عنوان یک متد عملیاتی (Action Method) شناخته می‌شود، پس به متدهایی که درون کلاس کنترلر تعریف می‌کنیم اکشن متد گفته می‌شود. هر درخواست کاربر به اکشن متد مربوطه ارسال می‌شود و اکشن متد به درخواست کاربر پاسخ می‌دهد.

ساخت یک کنترلر ساده

در فولدر Controllers خود یک فایل به نام SimpleController ایجاد کنید و کدهای زیر را درون آن قرار دهید.

using Microsoft.AspNetCore.Mvc;

namespace Example.Controllers
{
[ApiController]
[Route("[controller]/[Action]")]
public class SimpleController : ControllerBase
{
[HttpGet]
public string Get()
{
return "Hello world!";
}
}
}

در کد بالا شما یک کنترلر به نام Simple ساختید که یک اکشن متد به نام Get دارد. مسیر دسترسی به آن را هم به صورتی تعریف شده که برای دسترسی به آن ابتدا باید نام کنترلر و سپس نام اکشن متد بیاید. برای تست کد خود لینک https://localhost:<appPort>/Simple/Get را باز کنید و خروجی آن را مشاهده کنید.

خروجی اکشتن متدها

در ASP.NET Core خروجی اکشن‌ها به سه صورت می‌تواند باشد:

  • Specific type
  • IActionResult
  • ActionResult<T>

برای آشنایی بیشتر با این نوع خروجی‌ها Controller action return types in ASP.NET Core web API را مطالعه کنید.

Routing

برای مسیردهی در Asp.net core از دو روش می‌توان این کار را انجام داد. یکی ست کردن تنظیمات در فایل Program.cs و دیگری استفاده از اتریبیوت Route. برای آشنایی بیشتر با این موضوع لینک‌های زیر را مطالعه کنید:

Dependency Injection

تزریق وابستگی یا (Dependency Injection) فرآیندی می‌باشد که در آن وابستگی‌های ما به یک کلاس با استفاده از یک رابط کاربری (یا همان Interface) حذف می شود. در ASP.NET Core به صورت پیش فرض این امکان به ما داده شده است که بتوانیم بدون نیاز به درگیری با مورد خاصی از این ویژگی استفاده کنیم.

برای یادگیری و درک بهتر این موضوع لینک‌های زیر را مطالعه کنید:

Http Methods

با استفاده از اتریبیوت‌های Http Methods شما می‌توانید مشخص کنید اکشن شما با استفاده از کدام Http method صدا شود.

درک بهتر لینک‌های زیر را مطالعه کنید:

Parameter Binding

در ASP.NET Core برای گرفتن محتویات درخواست Http به آرگومان‌های ورودی اکشن از Parameter Binding کمک می‌گیریم. به وسیله این مفهوم مشخص می‌کنیم داده از Body یا قسمت‌های دیگر ریکوئست خوانده شود.

برای آشنایی بیشتر با این مفهوم لینک‌های زیر را مطالعه کنید:

Configuration

در ASP.NET Core تنظیمات برنامه می‌تواند از منابع مختلفی بیاید. یکی از پرکاربرد‌ترین آن‌ها فایل است. تغییر تنظیمات ذخیره شده در فایل نیاز به Build مجدد ندارد. از این رو استفاده از آن متداول است. با استفاده از لینک‌های زیر با این فایل‌ها در ASP.NET Core آشنا شوید و تفاوت فایل‌های launchSetting.json، appsetting.json و appsetting.{Environment}.json را درک کنید. ({Environment} محیط کنونی برنامه است که مقدار آن می‌تواند Development، Staging یا Production باشد)

در لینک‌های بالا مطالعه بخش‌های مربوط به Visual Studio نیاز نیست.

Postman

Postman یک افزونه گوگل کروم است که با استفاده از آن می‌شود به راحتی متدهای یک Web API را اجرا، تست یا بررسی کرد.

این ابزار به ما کمک می‌کند تا به سرعت یک درخواست HTTP ایجاد و ارسال کنیم.

ذخیره درخواست‌ها برای استفاده‌های بعدی، تجزیه و تحلیل پاسخ‌ها، تغییر سریع محتوای یک درخواست، احراز هویت کاربر با ارسال اطلاعات، سفارشی کردن و... از امکانات خوب این افزونه است که باعث می‌شود در هنگام توسعه یک API زمان بسیار زیادی را صرفه جویی کنید.

Postman ابزاری بسیار سبک بر مبنای وب است که از آن برای تست کردن سایر API ها استفاده می شود. کاربرد این ابزار زمانی مشهود است که برنامه نویس قبل از استفاده از یک مدل API آن را با Postman بررسی کند. درخواست‌های API (حتی درخواست‌های پیچیده) را می‌توان با Postman به راحتی ایجاد کرد و جواب آن‌ها را به شکل‌ها و فرمت‌های مختلف در مرورگر دریافت نمود. همین کارایی باعث می‌شود که برنامه‌نویس بداند API مورد نظرش چگونه رفتار می کند و در تصمیم‌گیری برای استفاده از آن راحت‌تر باشد.

برای نصب این نرم‌افزار می‌توانید آن را از سایت رسمی Postman دانلود کنید.

برای آشنایی بیشتر با این نرم‌افزار می‌توانید Postman Tutorial for Beginners with API Testing Example را مطالعه کنید.

پروژه

برای پروژه‌ی جستجو که کوئری را از طریق کنسول دریافت می‌کرد یک API بنویسید که نتایج جستجو را در جواب API برگرداند.

پی‌نوشت

جهت آشنایی با ASP.NET Core Web API می‌توانید از ویدئوهای آموزشی Web APIs for Beginners مایکروسافت نیز استفاده کنید.