C# में GET मेथड को कई पैरामीटर पास करना वेब API डेवलपमेंट में एक सामान्य आवश्यकता है। यह लेख ASP.NET Core में इसे प्राप्त करने के विभिन्न तरीकों का पता लगाता है, स्पष्टता, रखरखाव और सर्वोत्तम प्रथाओं पर ध्यान केंद्रित करता है।
विषयवस्तु की तालिका
- पारंपरिक रूटिंग के माध्यम से पैरामीटर पास करना
- एट्रिब्यूट रूटिंग और [FromQuery] का उपयोग करना
- वैकल्पिक पैरामीटर को संभालना
- मॉडल बाइंडिंग का लाभ उठाना
- मजबूत त्रुटि संचालन
पारंपरिक रूटिंग के माध्यम से पैरामीटर पास करना
पारंपरिक रूटिंग सीधे URL पथ में पैरामीटर को शामिल करती है। यह तरीका कम संख्या में पैरामीटर के लिए उपयुक्त है जो सीधे किसी संसाधन की पहचान करते हैं।
उदाहरण: इसके ID और श्रेणी ID के आधार पर किसी उत्पाद को पुनर्प्राप्त करना।
URL: /products/123/category/456
using Microsoft.AspNetCore.Mvc;
public class ProductsController : Controller
{
public IActionResult GetProduct(int productId, int categoryId)
{
// Process productId and categoryId
return Ok($"Product ID: {productId}, Category ID: {categoryId}");
}
}
सीमाएँ: जैसे-जैसे पैरामीटर की संख्या बढ़ती है, URL कम पठनीय और रखरखाव योग्य हो जाते हैं। यह वैकल्पिक पैरामीटर के लिए कम लचीला है।
एट्रिब्यूट रूटिंग और [FromQuery] का उपयोग करना
एट्रिब्यूट रूटिंग URL संरचना पर अधिक नियंत्रण प्रदान करती है। [FromQuery]
का उपयोग करके, पैरामीटर क्वेरी स्ट्रिंग से निकाले जाते हैं, जिससे URL साफ़ और अधिक प्रबंधनीय बन जाते हैं, भले ही कई पैरामीटर हों।
उदाहरण: वही उत्पाद पुनर्प्राप्ति उदाहरण, लेकिन एट्रिब्यूट रूटिंग और [FromQuery]
का उपयोग करके।
URL: /products?productId=123&categoryId=456
using Microsoft.AspNetCore.Mvc;
[ApiController]
[Route("api/[controller]")]
public class ProductsController : ControllerBase
{
[HttpGet]
public IActionResult GetProduct([FromQuery] int productId, [FromQuery] int categoryId)
{
return Ok($"Product ID: {productId}, Category ID: {categoryId}");
}
}
यह विधि बेहतर URL संगठन और पठनीयता को बढ़ावा देती है। [ApiController]
एट्रिब्यूट स्वचालित मॉडल सत्यापन और प्रतिक्रिया संचालन को सक्षम करता है।
वैकल्पिक पैरामीटर को संभालना
वैकल्पिक पैरामीटर लचीलापन बढ़ाते हैं। कंट्रोलर एक्शन सिग्नेचर के भीतर डिफ़ॉल्ट मानों का उपयोग करें।
[HttpGet]
public IActionResult GetProduct([FromQuery] int productId, [FromQuery] int categoryId, [FromQuery] int pageSize = 10)
{
return Ok($"Product ID: {productId}, Category ID: {categoryId}, Page Size: {pageSize}");
}
यहाँ, यदि क्वेरी स्ट्रिंग में प्रदान नहीं किया जाता है, तो pageSize
का डिफ़ॉल्ट मान 10 होता है।
मॉडल बाइंडिंग का लाभ उठाना
कई पैरामीटर के लिए, एक समर्पित मॉडल बनाने पर विचार करें। यह कोड संगठन और रखरखाव में सुधार करता है। ASP.NET Core स्वचालित रूप से क्वेरी स्ट्रिंग को मॉडल के गुणों से बांध देगा।
public class ProductFilter
{
public int ProductId { get; set; }
public int CategoryId { get; set; }
public int PageSize { get; set; } = 10;
}
[HttpGet]
public IActionResult GetProduct(ProductFilter filter)
{
return Ok($"Product ID: {filter.ProductId}, Category ID: {filter.CategoryId}, Page Size: {filter.PageSize}");
}
मजबूत त्रुटि संचालन
हमेशा संभावित त्रुटियों को संभालें, जैसे कि आवश्यक पैरामीटर गुम होना या अमान्य डेटा प्रकार। इन स्थितियों को इनायत से संभालने के लिए मॉडल सत्यापन या स्पष्ट पैरामीटर जांच जैसी तकनीकों का उपयोग करें।
[HttpGet]
public IActionResult GetProduct(ProductFilter filter)
{
if (filter.ProductId == 0)
{
return BadRequest("Product ID is required.");
}
// ... rest of your logic ...
}