در این پست از وبسایت پرووید در رابطه با بررسی Media Type Formatter ها در ASP.NET Web API #1 صحبت خواهیم کرد.

در این قسمت از این آموزش از وبسایت پرووید در رابطه با Media Type Formatter ها در ASP.NET Web API صحبت می کنیم. همانطور که در مطلب بررسی Data Format های Request و Reponse در ASP.NET Web API مشاهده کردید ASP.NET Web API به صورت خودکار می‌تواند داده‌هایی از نوع JSON و XML را دریافت یا به کلاینت ارسال کند.

بسته ی آموزش ویدئویی پیاده سازی امنیت در Web API در ASP.NET Core

از شما دعوت می کنیم که از بسته ی آموزش ویدئویی پیاده سازی امنیت در Web API در ASP.NET Core دیدن کنید.

این موضوع با تنظیم کردن Header های Accept و Content-Type انجام می‌شود. اما این اتفاق چگونه رخ می دهد؟ یا به عبارت دیگر ASP.NET Web API چگونه می‌تواند به صورت خودکار این موارد را به هم دیگر تبدیل کند؟ این موضوع با استفاده از Media Type Formatter ها اتفاق می‌افتد. Media Type Formatter ها کلاس هایی هستند که مسئولیت Serialize کردن داده های درون Request و Response را دارند. این داده ها توسط ASP.NET Web API یا دریافت می شوند یا به سمت کلاینت ارسال می شوند. در جدول زیر انواع مختلفی از Media Type Formatter ها که به صورت Built-in در ASP.NET Web API وجود دارند را مشاهده می‌کنید.

به دست آوردن Media Type Formatter های Built-in

همانطور که قبلا گفتیم ASP.NET Web API به صورت Built-in کلاس های Media Type Formatter هایی که در جدول بالا مشاهده کردید را پشتیبانی میکند. اما می‌توانید ترتیب Media Type Formatter های موجود را تغییر داده، آنها را حذف کنید و یا به آنها اضافه کنید. کدی که در قسمت زیر مشاهده می کنید یک Action Method از نوع GET را نشان می دهد که تمامی Media Type Formatter‌ های Built-in در ASP.NET Web API را Return می کند.

public class FormattersController : ApiController
{
    public IEnumerable<string> Get()
    {
        IList<string> formatters = new List<string>();

        foreach (var item in GlobalConfiguration.Configuration.Formatters)
        {
            formatters.Add(item.ToString());
        }

        return formatters.AsEnumerable<string>();
    }
}

در کدی که در قسمت بالا مشاهده کردید GlobalConfiguration.Configuration.Formatters یک Collection از نوع MediaTypeFormatterCollection است را Return می کند که شامل تمامی Media Type Formatter ها می باشد. خروجی این Action Method در تصویر زیر نشان داده شده است.

بسته ی آموزش ویدئویی Concurrent Collection ها (کالکشن های همروند) در سی شارپ

توصیه می کنیم که از بسته ی آموزش ویدئویی Concurrent Collection ها (کالکشن های همروند) در سی شارپ دیدن کنید.

علاوه بر به دست آوردن تمامی Media Type Formatter ها با استفاده از کالکشن MediaTypeFormatterCollection، این Collection حاوی Property هایی هم هست که امکان دسترسی مستقیم به سه تا از چهار تا Media Type Formatter هایی که به صورت Built-in وجود دارند را به ما می دهد. کدی که در قسمت زیر مشاهده می کنید استفاده کردن از Property های کالکشن MediaTypeFormatterCollection برای به دست آوردن Media Type Formatter ها می باشد.

بسته ی آموزش ویدئویی Collection ها در سی شارپ

توصیه می کنیم که از بسته ی آموزش ویدئویی Collection ها در سی شارپ دیدن کنید.

public class FormattersController : ApiController
{
    public IEnumerable<string> Get()
    {
        IList<string> formatters = new List<string>();

        formatters.Add(GlobalConfiguration.Configuration.Formatters.JsonFormatter.GetType().FullName);
        formatters.Add(GlobalConfiguration.Configuration.Formatters.XmlFormatter.GetType().FullName);
        formatters.Add(GlobalConfiguration.Configuration.Formatters.FormUrlEncodedFormatter.GetType().FullName);
        
        return formatters.AsEnumerable<string>();
    }
}

و ما اجرا کردن کد بالا خروجی زیر را در مرورگر به ما تحویل می دهد.

در قسمت بعدی از این آموزش در رابطه با Media Type Formatter های مختلف صحبت خواهیم کرد.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *