एएसपी.नेट 5 एमवीसी 6 माइक्रोसॉफ्ट ने वेब एपीआई नियंत्रक वर्ग (ApiController
) के साथ सामान्य एमवीसी नियंत्रक वर्ग (Controller
) विलय कर दिया। अब से केवल Controller
कक्षा उत्तराधिकारी है, जिसमें वेबएपी की विशेषताएं भी शामिल हैं।एएसपी.नेट एमवीसी 6 में एमवीसी कंट्रोलर और वेब एपीआई कंट्रोलर के बीच क्या अंतर है?
तो अब एमवीसी और वेबएपी नियंत्रकों को अलग करना उतना आसान नहीं है। दोनों Controller
कक्षा से उत्तराधिकारी हैं। एकमात्र अंतर जो मैं खोज सकता हूं वह यह है कि WebApi की रूटिंग जानकारी अभी भी HttpGet
, HttpPost
, HttpPut
और HttpDelete
गुणों द्वारा प्रदान की गई है। लेकिन अब अलग-अलग विशेषताओं के साथ, विशेषता रूटिंग का उपयोग करके एमवीसी नियंत्रकों के साथ ऐसा करना संभव है।
यहां तक कि विशेषताएं विलय हो गई हैं। एमवीसी नियंत्रक अब भी सामग्री बातचीत का समर्थन करते हैं।
ठोस प्रश्न हैं:
वहाँ अभी भी कोई वास्तविक अंतर है, या यह अभी जिस तरह मार्गों निर्दिष्ट कर रहे हैं? वेब ऐप्स बनाने के लिए अब कौन सा तरीका पसंदीदा है?
(लगभग) खाली MVC नियंत्रक:
public class HomeController : Controller
{
public List<Person> Index()
{
return new List<Person>()
{
new Person() {Firstname = "test1", Lastname = "test2"},
new Person() {Firstname = "test3", Lastname = "test4"}
};
}
public IActionResult About()
{
ViewData["Message"] = "Your application description page.";
return View();
}
public IActionResult Contact()
{
ViewData["Message"] = "Your contact page.";
return View();
}
public IActionResult Error()
{
return View("~/Views/Shared/Error.cshtml");
}
}
(लगभग) खाली WebAPI नियंत्रक:
[Route("api/[controller]")]
public class ValuesController : Controller
{
// GET: api/values
[HttpGet]
public IEnumerable<Person> Get()
{
return new List<Person>()
{
new Person() {Firstname = "test1", Lastname = "test2"},
new Person() {Firstname = "test3", Lastname = "test4"}
};
}
// GET api/values/5
[HttpGet("{id}")]
public string Get(int id)
{
return "value";
}
// POST api/values
[HttpPost]
public void Post([FromBody]string value)
{
}
// PUT api/values/5
[HttpPut("{id}")]
public void Put(int id, [FromBody]string value)
{
}
// DELETE api/values/5
[HttpDelete("{id}")]
public void Delete(int id)
{
}
}
संपादित करें:
आप अगर सामग्री बातचीत काम करता है की कोशिश करना चाहते हैं, तो आपको इस कोड को अपने स्टार्टअप में शामिल करना होगा। कॉन्फिगर सर्विसेज विधि, क्योंकि डिफ़ॉल्ट रूप से रिटर्न प्रकार केवल JSON है।
services.Configure<MvcOptions>(options =>
{
options.AddXmlDataContractSerializerFormatter();
});
@ एमवीसी 6 में कोई भी 'एपीकंट्रोलर' वर्ग नहीं है, उन्होंने इसे 'नियंत्रक' वर्ग में विलय कर दिया है। यदि आप विजुअल स्टूडियो – Domysee
के साथ वेबएपी कंट्रोलर बनाते हैं तो यह वही है, मुझे लगता है कि मुझे एमवीसी 6:/ – Will
में देखने की ज़रूरत है, हाँ, कई दिलचस्प बदलाव हुए – Domysee