मैं तथ्य यह है कि ASP.NET कोर के MVC6 एक में दो पैटर्न विलय कर दिया पसंद है क्योंकि मैं अक्सर दोनों का समर्थन करने की जरूरत है दुनिया।हालांकि यह सच है कि आप किसी भी मानक एमवीसी Controller
(और/या ActionResult
कक्षाओं को विकसित करने के लिए) को कार्य करने के लिए ApiController
की तरह व्यवहार करने के लिए ट्विक कर सकते हैं, इसे बनाए रखने और परीक्षण करने में बहुत मुश्किल हो सकती है: उस पर, नियंत्रकActionResult
लौटने वाले तरीके कच्चे/क्रमबद्ध/डेटा लौटने वाले अन्य लोगों के साथ मिश्रित एक डेवलपर परिप्रेक्ष्य से बहुत भ्रमित हो सकते हैं, खासकर यदि आप अकेले काम नहीं कर रहे हैं और अन्य डेवलपर्स को उस हाइब्रिड दृष्टिकोण के साथ गति में लाने की आवश्यकता है।
एएसपी.NET गैर-कोर वेब अनुप्रयोगों में उस समस्या को कम करने के लिए अब तक की सबसे अच्छी तकनीक एमवीसी-आधारित वेब अनुप्रयोग में वेब एपीआई पैकेज आयात (और उचित रूप से कॉन्फ़िगर) है, इसलिए मेरे पास हो सकता है दोनों दुनिया के सर्वश्रेष्ठ: Controllers
दृश्य के लिए, ApiControllers
डेटा के लिए।
ऐसा करने में, आप निम्न कार्य करने होंगे:
- NuGet का उपयोग कर स्थापित करें निम्नलिखित वेब एपीआई संकुल:
Microsoft.AspNet.WebApi.Core
और Microsoft.AspNet.WebApi.WebHost
।
- अपने
/Controllers/
फ़ोल्डर में एक या अधिक एपीकंट्रोलर जोड़ें।
- निम्नलिखित WebApiConfig.cs अपने
/App_Config/
फ़ोल्डर में फ़ाइल जोड़ें:
using System.Web.Http;
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
अंत में, आप अपने स्टार्टअप वर्ग के लिए ऊपर वर्ग रजिस्टर करने की आवश्यकता होगी (या तो Startup.cs
या Global.asax.cs
, निर्भर करता है कि आप OWIN स्टार्टअप टेम्पलेट का उपयोग कर रहे हैं या नहीं)।
Startup.cs
public void Configuration(IAppBuilder app)
{
// Register Web API routing support before anything else
GlobalConfiguration.Configure(WebApiConfig.Register);
// The rest of your file goes there
// ...
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
ConfigureAuth(app);
// ...
}
Global.asax.cs
protected void Application_Start()
{
// Register Web API routing support before anything else
GlobalConfiguration.Configure(WebApiConfig.Register);
// The rest of your file goes there
// ...
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
// ...
}
यह दृष्टिकोण - एक साथ अपने पक्ष-विपक्ष के साथ - आगे the following post से समझाया गया है।
महत्वपूर्ण: एएसपीएनईटी कोर 'एपीकंट्रोलर' और 'कंट्रोलर' 'विलय हो गया है, इसलिए यदि आप नए .NET का उपयोग कर रहे हैं तो आपको अब एपीकंट्रोलर के बारे में चिंता करने की आवश्यकता नहीं है - https://docs.microsoft.com/en -us/aspnet/core/tutorials/first-web-api –
उन्होंने देखा है! मैंने इस लंबे समय से http://prideparrot.com/blog/archive/2012/10/asp_net_mvc_vs_webapi – VJAI