একটি মিডিয়া টাইপ, যাকে MIME টাইপও বলা হয়, ডেটার একটি অংশের বিন্যাস সনাক্ত করে। এইচটিটিপি-তে, মিডিয়া প্রকারগুলি বার্তা বডির বিন্যাস বর্ণনা করে। একটি মিডিয়া টাইপ দুটি স্ট্রিং নিয়ে গঠিত, একটি টাইপ এবং একটি সাবটাইপ। যেমন −
- পাঠ্য/html
- ছবি/png
- অ্যাপ্লিকেশন/json
যখন একটি HTTP বার্তায় একটি সত্তা-বডি থাকে, তখন বিষয়বস্তু-প্রকার শিরোনামটি বার্তার মূল অংশের বিন্যাস নির্দিষ্ট করে। এটি রিসিভারকে বলে যে কিভাবে বার্তার মূল অংশের বিষয়বস্তু পার্স করতে হয়।
যখন ক্লায়েন্ট একটি অনুরোধ বার্তা পাঠায়, তখন এটি একটি স্বীকার শিরোনাম অন্তর্ভুক্ত করতে পারে। Accept হেডার সার্ভারকে বলে যে ক্লায়েন্ট সার্ভার থেকে কোন মিডিয়া প্রকার(গুলি) চায়৷
স্বীকার করুন:text/html,application/xhtml+xml,application/xml
মিডিয়া টাইপ নির্ধারণ করে কিভাবে Web API এইচটিটিপি মেসেজ বডিকে সিরিয়ালাইজ করে এবং ডিসিরিয়ালাইজ করে। ওয়েব API XML, JSON, BSON, এবং ফর্মুরলেনকোডেড ডেটার জন্য অন্তর্নির্মিত সমর্থন রয়েছে এবং আপনি একটি মিডিয়া ফর্ম্যাটার লিখে অতিরিক্ত মিডিয়া প্রকারগুলিকে সমর্থন করতে পারেন৷
MediaTypeFormatter হল একটি বিমূর্ত শ্রেণী যেখান থেকে JsonMediaTypeFormatter এবং XmlMediaTypeFormatter ক্লাস উত্তরাধিকারসূত্রে পাওয়া যায়। JsonMediaTypeFormatter JSON পরিচালনা করে এবং XmlMediaTypeFormatter XML পরিচালনা করে। WebApiConfig ক্লাসের রেজিস্টার পদ্ধতিতে মিডিয়া প্রকারগুলি নির্দিষ্ট করা হয়েছে। আসুন কিছু উদাহরণ দেখি যেখানে আমরা মিডিয়ার ধরন নিয়ে খেলতে পারি।
ছাত্র নিয়ন্ত্রক
উদাহরণ
using DemoWebApplication.Models; using DemoWebApplication.Models; using System.Collections.Generic; using System.Linq; using System.Web.Http; namespace DemoWebApplication.Controllers{ public class StudentController : ApiController{ List <Student> students = new List <Student>{ new Student{ Id = 1, Name = "Mark" }, new Student{ Id = 2, Name = "John" } }; public IEnumerable <Student> Get(){ return students; } } }
ASP.NET ওয়েব API পরিষেবা থেকে শুধুমাত্র JSON ফেরত দেওয়ার উদাহরণ, হেডার মান নির্বিশেষে -
public static class WebApiConfig{ public static void Register(HttpConfiguration config){ config.MapHttpAttributeRoutes(); config.Formatters.Remove(config.Formatters.XmlFormatter); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); } }
উপরের কোডটি ব্যবহার করে, আমরা XmlFormatter সরিয়ে দিয়েছি যা ASP.NET ওয়েব APIকে সর্বদা JSON ফেরত দিতে বাধ্য করে, ক্লায়েন্ট অনুরোধে হেডার মান নির্বিশেষে স্বীকার করে। এই কৌশলটি ব্যবহার করুন যখন আপনি চান যে আপনার পরিষেবাটি শুধুমাত্র JSON সমর্থন করবে এবং XML নয়৷
৷
উপরের আউটপুট থেকে আমরা দেখতে পাচ্ছি যে Accept হেডার মান অ্যাপ্লিকেশন/xml নির্বিশেষে, ওয়েব API পরিষেবা সর্বদা JSON ফেরত দিতে যাচ্ছে।
ASP.NET Web API পরিষেবা থেকে শুধুমাত্র XML ফেরত দেওয়ার উদাহরণ, হেডার মান নির্বিশেষে স্বীকার করুন -
public static class WebApiConfig{ public static void Register(HttpConfiguration config){ config.MapHttpAttributeRoutes(); config.Formatters.Remove(config.Formatters.JsonFormatter); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); } }
উপরের আউটপুট থেকে আমরা দেখতে পাচ্ছি যে Accept হেডার মান অ্যাপ্লিকেশন/json নির্বিশেষে, ওয়েব API পরিষেবা XML ফেরত দিচ্ছে।
ASP.NET Web API পরিষেবা থেকে XML এর পরিবর্তে JSON ফেরত দেওয়ার উদাহরণ যখন ব্রাউজার থেকে অনুরোধ করা হয় -
ব্রাউজার থেকে আমাদের স্টুডেন্ট কন্ট্রোলারের কাছে একটি অনুরোধ করা হলে, প্রতিক্রিয়াটি XML ফর্ম্যাটে হবে। এর কারণ হল ব্রাউজার ডিফল্টরূপে পাঠ্য/html হিসাবে স্বীকার শিরোনাম পাঠায়।
এখন দেখা যাক ব্রাউজার থেকে রিকোয়েস্ট ইস্যু করা হলে XML এর পরিবর্তে JSON রেসপন্স কিভাবে পাঠাতে হয়।
public static class WebApiConfig{ public static void Register(HttpConfiguration config){ config.MapHttpAttributeRoutes(); config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html")); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); } }
নীচের আউটপুটটি দেখায় যে প্রতিক্রিয়াটি JSON টাইপের হয় যখন অনুরোধটি ব্রাউজার থেকে বরখাস্ত করা হয়, শিরোনাম টেক্সট/html স্বীকার না করেই৷