কম্পিউটার টিউটোরিয়াল

C# ASP.NET WebAPI-তে FromBody এবং FromUri অ্যাট্রিবিউটের পার্থক্য কী?

যখন ASP.NET Web API একটি কন্ট্রোলারের মেথড কল করে, তখন এটি প্যারামিটারদের জন্য মান সেট করতে হবে, এই প্রক্রিয়াকে প্যারামিটার বাইন্ডিং বলা হয়।

একটি মডেল (একশন প্যারামিটার) বাইন্ড করতে হলে, যা সাধারণত একটি ফরম্যাটারের ডিফল্ট হবে, URI থেকে বাইন্ড করতে হলে সেটিকে `[FromUri]` অ্যাট্রিবিউট দিয়ে ডেকোরেট করতে হয়। `FromUriAttribute` সরাসরি `ModelBinderAttribute` থেকে ইনহেরিট করে, যা আমাদের একটি শর্টকাট ডিরেক্টিভ দেয় Web API-কে নির্দেশ করার জন্য যে নির্দিষ্ট প্যারামিটারগুলো URI থেকে `IUriValueProviderFactory`-এ ডিফাইন করা `ValueProviders` ব্যবহার করে নিতে হবে। অ্যাট্রিবিউটটি সিল্ড (sealed) এবং আরও এক্সটেন্ড করা যাবে না, কিন্তু আপনি যতটুকু চাইতেন কাস্টম `IUriValueProviderFactories` যোগ করতে পারেন।

`[FromBody]` অ্যাট্রিবিউট যা `ParameterBindingAttribute` ক্লাস থেকে ইনহেরিট করে, একটি HTTP রিকোয়েস্টের বডি থেকে একটি প্যারামিটার এবং এর প্রপার্টিগুলো পপুলেট করতে ব্যবহৃত হয়। ASP.NET রানটাইম বডি পড়ার দায়িত্ব একটি ইনপুট ফরম্যাটারের ওপর দেয়। যখন `[FromBody]` একটি কমপ্লেক্স টাইপ প্যারামিটারের ওপর প্রয়োগ করা হয়, তখন তার প্রপার্টিগুলোর ওপর প্রয়োগ করা যেকোনো বাইন্ডিং সোর্স অ্যাট্রিবিউট ইগনোর করা হয়।

FromUri Attribute উদাহরণ

উদাহরণ

using System.Collections.Generic;
using System.Web.Http;

namespace DemoWebApplication.Controllers
{
    public class DemoController : ApiController
    {
        public IEnumerable Get([FromUri] string id, [FromUri] string name)
        {
            return new string[]
            {
                $"The Id of the Student is {id}",
                $"The Name of the Student is {name}"
            };
        }
    }
}

উপরের উদাহরণের জন্য id এবং name-এর মান URI-এ পাস করি যাতে সেগুলো Get মেথডের соответствующих ভেরিয়েবলগুলোর সাথে ম্যাপ হয়।

https://localhost:58174/api/demo?id=1&name=Mark

আউটপুট

উপরের কোডের আউটপুট:

C# ASP.NET WebAPI-তে FromBody এবং FromUri অ্যাট্রিবিউটের পার্থক্য কী?

FromBody Attribute উদাহরণ

উদাহরণ

চলুন একটি Student মডেল তৈরি করি যাতে নিচের প্রপার্টিগুলো থাকে।

namespace DemoWebApplication.Models
{
    public class Student
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }
}

কন্ট্রোলার কোড

উদাহরণ

using DemoWebApplication.Models;
using System.Collections.Generic;
using System.Web.Http;

namespace DemoWebApplication.Controllers
{
    public class DemoController : ApiController
    {
        public IEnumerable Get([FromBody] Student student)
        {
            return new string[]
            {
                $"The Id of the Student is {student.Id}",
                $"The Name of the Student is {student.Name}"
            };
        }
    }
}

উপরের উদাহরণের জন্য student-এর মান রিকোয়েস্ট বডিতে পাস করা হয় এবং সেটি Student অবজেক্টের αντίστοরপূর্ণ প্রপার্টির সাথে ম্যাপ হয়। নিচে Postman ব্যবহার করে রিকোয়েস্ট এবং রেসপন্স দেখানো হলো।

C# ASP.NET WebAPI-তে FromBody এবং FromUri অ্যাট্রিবিউটের পার্থক্য কী?

  1. HTML-এ id এবং name অ্যাট্রিবিউটের পার্থক্য কী?

  2. novalidate এবং formnovalidate অ্যাট্রিবিউটের পার্থক্য কী?

  3. C#-এ String (ক্লাস) এবং string (এলিয়াস) এর পার্থক্য

  4. C#-এ লিস্ট এবং অ্যারেতে পার্থক্য (List vs Array)