Attribute Routing হল ASP.NET Core-এ রাউটিং কনফিগারেশনের একটি শক্তিশালী এবং নমনীয় পদ্ধতি। এই পদ্ধতিতে, রাউটিং তথ্য সরাসরি কন্ট্রোলার এবং অ্যাকশন মেথডগুলির উপর অ্যাট্রিবিউট আকারে নির্ধারণ করা হয়, যার ফলে রাউটিং কনফিগারেশন আরও পরিষ্কার এবং সহজে পরিচালনাযোগ্য হয়।
Attribute Routing এর মাধ্যমে আপনি কন্ট্রোলার এবং কন্ট্রোলারের মেথডগুলিতে রাউটিং কনফিগারেশন নির্দিষ্ট করতে পারেন। এর ফলে, URL প্যাটার্ন সরাসরি অ্যাকশন মেথডের উপরে সংজ্ঞায়িত করা যায়। এটি সাধারণত Route অ্যাট্রিবিউট ব্যবহার করে কনফিগার করা হয়।
এই পদ্ধতির প্রধান সুবিধা হলো এটি রাউটিংকে কন্ট্রোলারের মেথডের কাছে এনে দেয়, যার ফলে কোডের পাঠযোগ্যতা এবং রক্ষণাবেক্ষণ আরও সহজ হয়ে যায়।
ASP.NET Core-এ Attribute Routing কাজ করার জন্য, [Route] অ্যাট্রিবিউট ব্যবহার করা হয়। এই অ্যাট্রিবিউট কন্ট্রোলার বা অ্যাকশন মেথডের উপরে সংযোজিত হয় এবং এর মাধ্যমে রাউটিং প্যাটার্ন নির্ধারণ করা হয়।
উদাহরণ: কিভাবে Attribute Routing কাজ করে
using Microsoft.AspNetCore.Mvc;
namespace MyApp.Controllers
{
[Route("api/[controller]")]
public class ProductsController : Controller
{
// GET api/products
[HttpGet]
public IActionResult GetAllProducts()
{
return Ok(new { message = "Getting all products" });
}
// GET api/products/5
[HttpGet("{id}")]
public IActionResult GetProductById(int id)
{
return Ok(new { message = $"Getting product with ID {id}" });
}
// POST api/products
[HttpPost]
public IActionResult CreateProduct([FromBody] Product product)
{
return Ok(new { message = "Product created" });
}
}
}
এখানে, [Route("api/[controller]")]) অ্যাট্রিবিউটটি ProductsController
কন্ট্রোলারের জন্য রাউট নির্ধারণ করে, যেখানে [controller]
কে কন্ট্রোলারের নাম (যেমন Products
) দ্বারা প্রতিস্থাপন করা হয়। এর পরে, [HttpGet], [HttpGet("{id}")], এবং [HttpPost] অ্যাট্রিবিউটগুলি অ্যাকশন মেথডগুলির জন্য নির্দিষ্ট HTTP পদ্ধতিগুলি চিহ্নিত করে।
{id}
বা {name}
। এটি ডাইনামিক রাউট তৈরি করতে সাহায্য করে।{id:int}
।এখানে একটি Attribute Routing উদাহরণ দেওয়া হলো যেখানে কন্ট্রোলার এবং অ্যাকশন মেথডগুলির রাউটিং নির্দিষ্ট করা হয়েছে:
using Microsoft.AspNetCore.Mvc;
namespace MyApp.Controllers
{
// Controller level route
[Route("api/[controller]")]
public class ProductsController : Controller
{
// GET api/products
[HttpGet]
public IActionResult GetAllProducts()
{
return Ok("Getting all products");
}
// GET api/products/5
[HttpGet("{id:int}")]
public IActionResult GetProduct(int id)
{
return Ok($"Getting product with ID {id}");
}
// POST api/products
[HttpPost]
public IActionResult CreateProduct([FromBody] Product product)
{
return Ok("Product created successfully");
}
// PUT api/products/5
[HttpPut("{id}")]
public IActionResult UpdateProduct(int id, [FromBody] Product product)
{
return Ok($"Product with ID {id} updated");
}
// DELETE api/products/5
[HttpDelete("{id}")]
public IActionResult DeleteProduct(int id)
{
return Ok($"Product with ID {id} deleted");
}
}
}
এখানে, প্রতিটি মেথডে HttpGet
, HttpPost
, HttpPut
, এবং HttpDelete
অ্যাট্রিবিউট ব্যবহার করা হয়েছে, যা তাদের সম্পর্কিত HTTP পদ্ধতি নির্দেশ করে। এছাড়া, {id:int} কনস্ট্রেইন্ট ব্যবহার করা হয়েছে, যা নিশ্চিত করে যে id
প্যারামিটারটি একটি পূর্ণসংখ্যা হবে।
Attribute Routing-এ কনস্ট্রেইনট ব্যবহার করলে URL প্যারামিটারগুলির ধরন এবং মান নির্ধারণ করা যেতে পারে। যেমন:
{id:int}
: এটি নিশ্চিত করে যে id
একটি পূর্ণসংখ্যা (integer) হবে।{name:length(10)}
: এটি নিশ্চিত করে যে name
প্যারামিটারটির দৈর্ঘ্য ১০-এর কম হবে।এটি কন্ট্রোলার এবং অ্যাকশন মেথডগুলির মধ্যে সুনির্দিষ্ট রাউটিং কনফিগারেশন প্রদান করে।
Attribute Routing হল ASP.NET Core এ একটি শক্তিশালী রাউটিং পদ্ধতি, যা URL প্যাটার্ন সরাসরি কন্ট্রোলার এবং অ্যাকশন মেথডের উপর অ্যাট্রিবিউট আকারে নির্ধারণ করতে সাহায্য করে। এর মাধ্যমে আপনি সহজে এবং পরিষ্কারভাবে কনফিগারেশন করতে পারেন, এবং ডাইনামিক, কাস্টমাইজড রাউট তৈরি করতে সক্ষম হন। Attribute Routing এর প্রধান সুবিধা হলো কোডের পাঠযোগ্যতা বাড়ানো এবং রাউটিং ম্যানেজমেন্ট সহজতর করা।
common.read_more