একটি বিদ্যমান এএসপি.নেট এমভিসি (5) ওয়েব অ্যাপ্লিকেশন প্রকল্পে কীভাবে ওয়েব এপিআই যুক্ত করবেন?


146

ধরে নিই যে কোনও নতুন এমভিসি (5) প্রকল্প তৈরি করার সময় আপনি ওয়েব এপিআই চেকবক্সটিকে (প্রকল্পটিতে এটি যুক্ত করতে) ভুলে গেছেন, ওয়েব এপিআই যুক্ত করার এবং এটির কাজ করার জন্য আপনার কী দরকার?

এখানে অনেকগুলি মাইগ্রেশন প্রশ্ন রয়েছে, তবে এমভিসি 5 প্রকল্পে ওয়েব এপিআই যুক্ত করার জন্য কোনওটিরই সম্পূর্ণ এবং যুগোপযোগী পদক্ষেপ নেই বলে মনে হয়েছে এবং এটি পুরানো উত্তরগুলির কয়েকটি থেকে পরিবর্তিত হয়েছে বলে মনে হয়।

এমভিসি 4 এ ওয়েব এপিআই যুক্ত করুন

GlobalConfigration.Configure (WebApiConfig.Register) এমভিসি 4 যুক্ত করা হচ্ছে

উত্তর:


253

এমভিসি প্রকল্প আপডেট করুন

নতুন ওয়েব এপিআই পেতে নিউগেট ব্যবহার করুন ।

প্রকল্প - ডান ক্লিক করুন - নুগেট প্যাকেজগুলি পরিচালনা করুন - ওয়েব এপিআই (মাইক্রোসফ্ট এএসপি.নেট ওয়েব এপিআই ...) অনুসন্ধান করুন এবং এটি আপনার এমভিসি প্রকল্পে ইনস্টল করুন।

তারপরেও আপনাকে কাজের জন্য ওয়েব এপিআই রাউটিং পেতে হবে । থেকে Microsoft এর কনফিগার ASP.NET ওয়েব এপিআই 2

অ্যাপ্লিকেশন / ফোল্ডারে WebApiConfig.cs যুক্ত করুন

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();
        }
    }
}

আপনার যদি একটি এমভিসি প্রকল্প থাকে তবে এটিতে 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.HelpPage ইনস্টল করুন। দেখুন http://channel9.msdn.com/Events/Build/2014/3-644 (~ 42 মিনিট) এটি কী জন্য। এটি খুব সহায়ক বলে মনে হচ্ছে!

নিউজ কনসোল: Install-Package Microsoft.AspNet.WebApi.HelpPage

ওয়েবএপিআই যাচাই করতে কাজ করছে:

কন্ট্রোলার ফোল্ডারে -> নতুন আইটেম যুক্ত করুন -> ওয়েব এপিআই কন্ট্রোলার ক্লাস।

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";
    }
    //...
}

এখন আপনি যথারীতি আইই / এফএফ / ক্রোমে বা না পাওয়ার পরীক্ষার জন্য জাভাস্ক্রিপ্ট কনসোলগুলিতে পরীক্ষা করতে পারেন।

(ইউআরএলটিতে কেবলমাত্র নিয়ন্ত্রকের সাহায্যে এটি নতুন ওয়েব এপিআই কন্ট্রোলারে জিইটি () অ্যাকশনটিকে কল করবে, এটি স্বয়ংক্রিয়ভাবে বিশ্রামের উপর নির্ভর করে পদ্ধতি / ক্রিয়াগুলিতে ম্যাপ করা হয় যেমন পুট / পোস্ট / জিইটি / ডিলেট) আপনাকে কল করার দরকার নেই তাদের এমভিসির মতো ক্রিয়া করে) সরাসরি ইউআরএল:

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

বিকল্পভাবে নিয়ন্ত্রককে জিজ্ঞাসা করতে jQuery ব্যবহার করুন। প্রকল্পটি চালান, কনসোলটি খুলুন (আইই মধ্যে এফ 12) এবং একটি অ্যাজাক্স কোয়েরি চালানোর চেষ্টা করুন। (আপনার পোর্ট এবং কন্ট্রোলারাম পরীক্ষা করুন)

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

পার্শ্ব দ্রষ্টব্য: কোনও প্রকল্পে এমভিসি এবং ওয়েব এপিআইয়ের সংমিশ্রনের সময় কিছু বিষয় / বিবেচনা বিবেচনা করা উচিত

ওয়েবএপিআই সহায়তা যাচাইকরণ: http://localhost:PORT/help


@ আইকো আপনি কোডটিতে যা লিখেছেন তা সবই করেছি তবে আমি এটি চালানোর সময় একটি ত্রুটি করেছি। এটি আমাকে একটি ত্রুটি দেয়
নিনজাএক্সনাডো

1
ত্রুটি বার্তাটি অনুসন্ধান করার চেষ্টা করুন। এই পদক্ষেপগুলি সাধারণ ক্ষেত্রে যা প্রয়োজন তা মূলত ছিল।
lko

13
"গ্লোবাল.এক্সএক্স। সি রুটের ক্রমটি সমালোচিত" +1
জিম আহো

আমি বুঝতে পারি না যে আমি কীভাবে ওয়েব এপিআই যুক্ত করেছি তা পরীক্ষা করব? ব্রাউজারে আমার ঠিক কী লিখতে হবে? আমি লিখেছি http://localhost:12345/api/Get/5তবে আমি একটি ত্রুটি পেয়েছি।
জেসন

3
আমি ওয়েবপিপি কনফিগ.রেজিস্টারকে (GlobalConfigration.configration) কল করে "পুরানো উপায়" ব্যবহার করছিলাম; এবং আমি আর ডিবাগ করতে পারে না। আমি ডিবাগ করা শুরু করব এবং এটি কখনই আমার নিয়ন্ত্রণকারী কার্যগুলিতে পৌঁছতে পারে না। আমি "নতুন উপায়ে" GlobalConfigration.Configure (WebApiConfig.Register) এ পরিবর্তিত হয়েছি; এবং সমস্যাটি স্থির হয়েছিল।
ডি। কেরমট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.