Programming

기존 ASP.NET MVC 4 웹 응용 프로그램 프로젝트에 웹 API를 추가하는 방법은 무엇입니까?

procodes 2020. 2. 28. 19:35
반응형

기존 ASP.NET MVC 4 웹 응용 프로그램 프로젝트에 웹 API를 추가하는 방법은 무엇입니까?


Visual Studio 2012에서 개발 된 ASP.NET MVC 4 웹 응용 프로그램 프로젝트에 ASP.NET 웹 API 를 추가하고 싶습니다. 프로젝트에 작동하는 웹 API를 추가하려면 어떤 단계를 수행해야합니까? 나는 ApiController에서 파생 된 컨트롤러가 필요하다는 것을 알고 있지만 그것이 내가 아는 전부입니다.

더 자세한 정보가 필요하면 알려주십시오.


수행해야 할 단계는 다음과 같습니다.

  1. 에 참조를 추가하십시오 System.Web.Http.WebHost.
  2. 추가하십시오 App_Start\WebApiConfig.cs(아래 코드 스 니펫 참조).
  3. System.Web.Http에서 네임 스페이스 가져옵니다 Global.asax.cs.
  4. 기본 웹 응용 프로그램 경로를 등록 하기 전에 (file )을 호출 WebApiConfig.Register(GlobalConfiguration.Configuration)하고 그렇지 않으면 우선합니다.MvcApplication.Application_Start()Global.asax.cs
  5. 에서 파생 된 컨트롤러를 추가하십시오 System.Web.Http.ApiController.

그런 다음 자습서 (Your First ASP.NET Web API)에서 API 컨트롤러를 정의하기에 충분히 배울 수 있습니다 .

App_Start \ WebApiConfig.cs :

using System.Web.Http;

class WebApiConfig
{
    public static void Register(HttpConfiguration configuration)
    {
        configuration.Routes.MapHttpRoute("API Default", "api/{controller}/{id}",
            new { id = RouteParameter.Optional });
    }
}

Global.asax.cs :

using System.Web.Http;

...

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();

    RegisterGlobalFilters(GlobalFilters.Filters);
    WebApiConfig.Register(GlobalConfiguration.Configuration);
    RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);
}

2015 년 10 월 16 일 업데이트 :

위와 같이 작동하려면 NuGet 패키지 Microsoft.AspNet.WebApi가 설치되어 있어야합니다.


업데이트 11/22/2013-최신 WebApi 패키지입니다.

Install-Package Microsoft.AspNet.WebApi

원래 답변 (이전 WebApi 패키지 임)

Install-Package AspNetWebApi

자세한 내용은 .


내 MVC 5 프로젝트에 WebAPI를 추가합니다.

  1. NuGet 패키지 관리자 콘솔을 열고 실행

    PM> Install-Package Microsoft.AspNet.WebApi
    
  2. 참조 추가 System.Web.Routing, System.Web.Net그리고 System.Net.Http이미 DLL을하지 않을 경우이를

  3. 컨트롤러 폴더를 마우스 오른쪽 버튼으로 클릭하고 새 항목 추가> 웹> 웹 API 컨트롤러 추가

  4. Web.config는 VS에 따라 수정됩니다.

  5. Application_Start아직없는 경우 메소드 추가

    protected void Application_Start()
    {
        //this should be line #1 in this method
        GlobalConfiguration.Configure(WebApiConfig.Register);
    }
    
  6. 다음 클래스를 추가하십시오 (global.asax.cs 파일에 추가했습니다)

    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 }
             );
         }
     }
    
  7. 그에 따라 웹 API 방법 수정

    namespace <Your.NameSpace.Here>
    {
        public class VSController : ApiController
        {
            // GET api/<controller>   : url to use => api/vs
            public string Get()
            {
                return "Hi from web api controller";
            }
    
            // GET api/<controller>/5   : url to use => api/vs/5
            public string Get(int id)
            {
                return (id + 1).ToString();
            }
        }
    }
    
  8. 재 구축 및 테스트

  9. 간단한 HTML 페이지 작성

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>    
        <script src="../<path_to_jquery>/jquery-1.9.1.min.js"></script>
        <script type="text/javascript">
            var uri = '/api/vs';
            $(document).ready(function () {
                $.getJSON(uri)
                .done(function (data) {
                    alert('got: ' + data);
                });
    
                $.ajax({
                    url: '/api/vs/5',
                    async: true,
                    success: function (data) {
                        alert('seccess1');
                        var res = parseInt(data);
                        alert('got res=' + res);
                    }
                });
            });
        </script>
    </head>
    <body>
    ....
    </body>
    </html>
    

controllers 폴더에 "WebApi Controller"를 추가하자마자 Visual Studio는 종속성을 자동으로 관리합니다.

Visual Studio는 ASP.NET Web API 2가 'MyTestProject'프로젝트에 대한 모든 종속성을 추가했습니다.

프로젝트의 Global.asax.cs 파일은 ASP.NET 웹 API를 사용하기 위해 추가 변경이 필요할 수 있습니다.

  1. 다음 네임 스페이스 참조를 추가하십시오.

    System.Web.Http 사용; System.Web.Routing 사용;

  2. 코드가 Application_Start 메소드를 아직 정의하지 않은 경우 다음 메소드를 추가하십시오.

    protected void Application_Start () {}

  3. Application_Start 메소드의 시작 부분에 다음 행을 추가하십시오.

    GlobalConfiguration.Configure (WebApiConfig.Register);


아래 이미지와 같이 nuget에서 설치할 수 있습니다.

여기에 이미지 설명을 입력하십시오

또는 패키지 관리자 콘솔에서 아래 명령 줄을 실행하십시오.

Install-Package Microsoft.AspNet.WebApi

MVC와 Web API 프로젝트를 병합하기 전에 다른 프로젝트로 분리하는 단점과 장점대해 읽어보십시오 . 매우 중요한 것 중 하나는 완전히 다른 인증 시스템입니다.

MVC와 Web API 모두에서 인증 된 요청을 사용해야하는 경우 웹 API는 RESTful (세션을 유지하지 않아도되고 간단한 HTTP 요청 등)을 기억해야하지만 MVC는 그렇지 않습니다.

구현의 차이점을 살펴 보려면 Visual Studio 2013에서 템플릿을 사용하여 MVC 용 프로젝트와 웹 API 용 프로젝트의 두 가지 프로젝트를 만들기 만하면됩니다 (생성하는 동안 "개별 인증"을 설정하는 것을 잊지 마십시오). AuthencationController에는 많은 차이가 있습니다.

그러니 조심하십시오.


참고 : 이것은 위의 답변 의 약어입니다.

  1. NuGet 패키지 관리자 콘솔을 열고 실행

    PM> Install-Package Microsoft.AspNet.WebApi
    
  2. 참조 추가 System.Web.Routing, System.Web.Net그리고 System.Net.Http이미 DLL을하지 않을 경우이를

  3. 다음 클래스를 추가하십시오

    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 }
             );
         }
     }
    
  4. Application_Startglobal.asax.cs 파일에없는 경우 메소드 추가

    protected void Application_Start()
    {
        //this should be line #1 in this method
        GlobalConfiguration.Configure(WebApiConfig.Register);
    }
    
  5. 컨트롤러 폴더를 마우스 오른쪽 버튼으로 클릭하고 새 항목 추가> 웹> 웹 API 컨트롤러 추가

    namespace <Your.NameSpace.Here>
    {
        public class VSController : ApiController
        {
            // GET api/<controller>   : url to use => api/vs
            public string Get()
            {
                return "Hi from web api controller";
            }  
        }
    }
    

위의 솔루션은 완벽하게 작동합니다. 아래 그림과 같이 프로젝트 템플릿을 선택할 때 웹 API 옵션을 선택하는 것을 선호합니다

참고 : 이 솔루션은 Visual Studio 2013 이상에서 작동합니다. 원래 질문은 2012 년에 요청되었으며 2016 년이므로 Visual Studio 2013 이상 솔루션을 추가합니다.

웹 API 옵션을 보여주는 프로젝트 템플릿


나는 같은 문제를 겪었다. 해결책은 너무 쉽다.

"Solotion 용 Nuget 패키지 관리"에서 solotion install Microsoft.ASP.NET.WebApi를 마우스 오른쪽 단추로 클릭하십시오.

붐 그게;)

참고 URL : https://stackoverflow.com/questions/11990036/how-to-add-web-api-to-an-existing-asp-net-mvc-4-web-application-project



반응형