API Versioning in ASP.NET Core

حتما درباره الزامات استفاده‌ از API Versioning خوانده ایم. همانطور که میدانیم ، پیاده سازی Versioning در ASP.NET Web API کاری دشوار و زمانبر بود؛ اما در ASP.NET Core انجام تمامی آن مراحل، در یک خط صورت می‌گیرد که در ادامه آن را بررسی میکنیم. برای شروع با اجرای این دستور در Package Manager Console، پکیج Microsoft.AspNetCore.Mvc.Versioning را داخل پروژه نصب می‌کنیم: Install-Package Microsoft.AspNetCore.Mvc.Versioning بعد از نصب، کافیست کد زیر را داخل متد ConfigureServices در فایل Startup.

قیود مسیریابی در ASP.NET Core

Route Constraints قابلیتی است در ASP.NET Core که با استفاده از آن میتوانید از رسیدن مقادیر نامعتبر به پارامترهای Action متد یک Controller جلوگیری کنید. بعنوان مثال میتوانید محدودیتی قرار دهید که Routing فقط زمانی انجام شود که پارامتر وارد شده توسط کاربر، از جنس int باشد: [Route("api/[controller]")] public class ValuesController : ControllerBase { [HttpGet("{id:int}")] public IActionResult Get(int id) { return Ok(id); } } با قرار دادن یک Break-point در ابتدای اکشن متد، اگر سعی کنید این اکشن متد را با یک alpha string فراخوانی کنید، خواهید دید که به Break-point نرسیده و عمل Routing انجام نمیشود.

آشنایی با ویژگی DebuggerTypeProxy در Visual Studio

ویژگی DebuggerDisplay در Visual Studio پیش تر معرفی شده است. ویژگی دیگری شبیه به این ویژگی وجود دارد به نام DebuggerTypeProxy که در ادامه به معرفی آن می‌پردازیم. کلاس زیر را در نظر بگیرید: public class Data { public string Name { get; set; } public string ValueInHex { get; set; } } پس از اجرای برنامه ، مقادیر کلاس ایجاد شده به این صورت خواهند بود : در اینجا مقدار Hex برایمان قابل فهم نیست.

تولید اطلاعات تصادفی توسط GenFu

گاها برای تولید اطلاعات تصادفی، خصوصا هنگام نوشتن تست‌ها، زمان زیادی بیهوده تلف شده و حجم زیادی کد اضافه تولید میشود. کتابخانه‌ای بنام GenFu ایجاد شده که وظیفه ایجاد داده‌های تصادفی را بر عهده گرفته‌ است. این کتابخانه متن باز (Open Source) بوده و می‌توانید آن را از مخزن گیت‌هاب دریافت نمایید. در مطلب جاری قصد ایجاد اطلاعات تصادفی برای کلاس زیر را داریم : public class Person { public int ID { get; set; } public string Firstname { get; set; } public string Lastname { get; set; } public string Email { get; set; } public string PhoneNumber { get; set; } public override string ToString() { return $"{ID}: {Firstname} {Lastname} - {Email} - {PhoneNumber}"; } } نصب GenFu