किसी मौजूदा ASP.NET MVC (5) वेब एप्लिकेशन प्रोजेक्ट में वेब एपीआई कैसे जोड़ें?


146

मान लें कि एक नया MVC (5) प्रोजेक्ट बनाते समय आप वेब एपीआई चेकबॉक्स (प्रोजेक्ट में इसे जोड़ें) पर टिक करना भूल गए, तो आपको वेब एपीआई को जोड़ने और इसे काम करने के लिए क्या करने की आवश्यकता है?

प्रवासन के सवालों का एक समूह है, लेकिन किसी को भी वेब एपीआई को एक एमवीसी 5 परियोजना में जोड़ने के लिए पूर्ण और अद्यतित कदम नहीं लग रहे थे और लगता है कि यह कुछ पुराने उत्तरों से बदल गया है।

MVC 4 में वेब API जोड़ें

GlobalConfiguration.Configure (WebApiConfig.Register) जोड़ना MVC 4

जवाबों:


253

MVC प्रोजेक्ट को अद्यतन करें

नवीनतम वेब API प्राप्त करने के लिए Nuget का उपयोग करें ।

प्रोजेक्ट - राइट क्लिक - Nuget Package प्रबंधित करें - वेब एपीआई (Microsoft ASP.NET वेब एपीआई ...) की खोज करें और इसे अपने MVC प्रोजेक्ट में स्थापित करें।

फिर आपको काम करने के लिए अभी भी वेब एपीआई प्राप्त करना होगा। से माइक्रोसॉफ्ट के कॉन्फ़िगर ASP.NET वेब एपीआई 2

WebApiConfig.cs को App_Start / फ़ोल्डर में जोड़ें

using System.Web.Http;

namespace WebApplication1
{
    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // TODO: Add any additional configuration code.

            // Web API routes
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

        // WebAPI when dealing with JSON & JavaScript!
        // Setup json serialization to serialize classes to camel (std. Json format)
        var formatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
        formatter.SerializerSettings.ContractResolver =
            new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver();
        }
    }
}

यदि आपके पास MVC प्रोजेक्ट है, तो इसमें Global.asax.cs होगा , नए मार्ग जोड़ें। Global.asax.cs मार्गों का क्रम महत्वपूर्ण है। नोट पुराने उदाहरण हैं जो उपयोग करते हैं WebApiConfig.Register

इस लाइन को Global.asax.cs में जोड़ें: GlobalConfiguration.Configure(WebApiConfig.Register);

protected void Application_Start()
{
    // Default stuff
    AreaRegistration.RegisterAllAreas();

    // Manually installed WebAPI 2.2 after making an MVC project.
    GlobalConfiguration.Configure(WebApiConfig.Register); // NEW way
    //WebApiConfig.Register(GlobalConfiguration.Configuration); // DEPRECATED

    // Default stuff
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);
}

WebAPI सहायता

( बहुत ) मददगार वेबएपीआई पृष्ठों को पाने के लिए , वेबएपीआई.हेलपेज को स्थापित करें। Http://channel9.msdn.com/Events/Build/2014/3-644 (~ 42 मिनट) में देखें कि वह क्या करता है। यह बहुत मददगार लगता है!

Nuget कंसोल: Install-Package Microsoft.AspNet.WebApi.HelpPage

सत्यापित करने के लिए WebAPI काम कर रहा है:

नियंत्रक फ़ोल्डर में -> नया आइटम जोड़ें -> वेब एपीआई नियंत्रक वर्ग।

public class TestController : ApiController
{
    //public TestController() { }

    // GET api/<controller>
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }

    // GET api/<controller>/5
    public string Get(int id)
    {
        return "value";
    }
    //...
}

अब आप IE / FF / Chrome में हमेशा की तरह परीक्षण कर सकते हैं, या गैर-परीक्षण के लिए JavaScript कंसोल में देख सकते हैं।

(URL में सिर्फ कंट्रोलर के साथ, यह नए वेब API कंट्रोलर में GET () एक्शन को कॉल करेगा, यह REST उदा PUT / POST / GET / DELETE के आधार पर स्वचालित रूप से उन तरीकों / क्रियाओं पर मैप किया जाता है। आपको कॉल करने की आवश्यकता नहीं है। एमवीसी की तरह उन्हें क्रिया द्वारा) सीधे URL:

http://localhost:PORT/api/CONTROLLERNAME/

वैकल्पिक रूप से नियंत्रक का उपयोग करने के लिए jQuery का उपयोग करें। प्रोजेक्ट चलाएँ, कंसोल खोलें (IE में F12) और अजाक्स क्वेरी चलाने का प्रयास करें। (अपने पोर्ट और नियंत्रण सूची की जाँच करें)

$.get( "http://localhost:PORT/api/CONTROLLERNAME/", function( data ) {
    //$( ".result" ).html( data );
    alert( "Get data received:" + data);
});

साइड नोट: किसी परियोजना में एमवीसी और वेब एपीआई के संयोजन पर विचार करने के लिए कुछ पेशेवरों / विपक्ष हैं

WebAPI सहायता सत्यापन: http://localhost:PORT/help


@ अगर मैं कोड पर लिखा है कि मैं सब कुछ किया है, लेकिन मैं एक त्रुटि है जब मैं इसे चलाते हैं। यह मुझे एक त्रुटि देता है
निंजाएक्सनैडो

1
त्रुटि संदेश के लिए खोज करने का प्रयास करें। ये चरण अनिवार्य रूप से सामान्य मामले में आवश्यक थे।
lko

13
"Global.asax.cs मार्गों का क्रम महत्वपूर्ण है" +1
जिम आहो

मुझे समझ नहीं आ रहा है कि अगर मैंने वेब एपीआई को सही ढंग से जोड़ा तो परीक्षण कैसे किया जाए? मुझे ब्राउज़र को वास्तव में क्या लिखना चाहिए? मैंने लिखा था http://localhost:12345/api/Get/5लेकिन मुझे एक त्रुटि मिली।
जासन

3
मैं WebApiConfig.Register (GlobalConfiguration.configuration) को कॉल करने के "पुराने तरीके" का उपयोग कर रहा था; और मैं अब डिबग नहीं कर सकता था। मैं डिबगिंग शुरू करूंगा और यह मेरे नियंत्रक कार्यों तक कभी नहीं पहुंचेगा। मैंने "नया तरीका" GlobalConfiguration.Configure (WebApiConfig.Register) में बदल दिया; और समस्या ठीक हो गई।
डी। कर्मोट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.