기존 ASP.NET MVC 4 웹 응용 프로그램 프로젝트에 웹 API를 추가하는 방법은 무엇입니까?
Visual Studio 2012에서 개발 된 ASP.NET MVC 4 웹 응용 프로그램 프로젝트에 ASP.NET 웹 API 를 추가하고 싶습니다. 프로젝트에 작동하는 웹 API를 추가하려면 어떤 단계를 수행해야합니까? 나는 ApiController에서 파생 된 컨트롤러가 필요하다는 것을 알고 있지만 그것이 내가 아는 전부입니다.
더 자세한 정보가 필요하면 알려주십시오.
수행해야 할 단계는 다음과 같습니다.
- 에 참조를 추가하십시오
System.Web.Http.WebHost
. - 추가하십시오
App_Start\WebApiConfig.cs
(아래 코드 스 니펫 참조). System.Web.Http
에서 네임 스페이스 를 가져옵니다Global.asax.cs
.- 기본 웹 응용 프로그램 경로를 등록 하기 전에 (file )을 호출
WebApiConfig.Register(GlobalConfiguration.Configuration)
하고 그렇지 않으면 우선합니다.MvcApplication.Application_Start()
Global.asax.cs
- 에서 파생 된 컨트롤러를 추가하십시오
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를 추가합니다.
NuGet 패키지 관리자 콘솔을 열고 실행
PM> Install-Package Microsoft.AspNet.WebApi
참조 추가
System.Web.Routing
,System.Web.Net
그리고System.Net.Http
이미 DLL을하지 않을 경우이를컨트롤러 폴더를 마우스 오른쪽 버튼으로 클릭하고 새 항목 추가> 웹> 웹 API 컨트롤러 추가
Web.config는 VS에 따라 수정됩니다.
Application_Start
아직없는 경우 메소드 추가protected void Application_Start() { //this should be line #1 in this method GlobalConfiguration.Configure(WebApiConfig.Register); }
다음 클래스를 추가하십시오 (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 } ); } }
그에 따라 웹 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(); } } }
재 구축 및 테스트
간단한 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를 사용하기 위해 추가 변경이 필요할 수 있습니다.
다음 네임 스페이스 참조를 추가하십시오.
System.Web.Http 사용; System.Web.Routing 사용;
코드가 Application_Start 메소드를 아직 정의하지 않은 경우 다음 메소드를 추가하십시오.
protected void Application_Start () {}
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에는 많은 차이가 있습니다.
그러니 조심하십시오.
참고 : 이것은 위의 답변 의 약어입니다.
NuGet 패키지 관리자 콘솔을 열고 실행
PM> Install-Package Microsoft.AspNet.WebApi
참조 추가
System.Web.Routing
,System.Web.Net
그리고System.Net.Http
이미 DLL을하지 않을 경우이를다음 클래스를 추가하십시오
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 } ); } }
Application_Start
global.asax.cs 파일에없는 경우 메소드 추가protected void Application_Start() { //this should be line #1 in this method GlobalConfiguration.Configure(WebApiConfig.Register); }
컨트롤러 폴더를 마우스 오른쪽 버튼으로 클릭하고 새 항목 추가> 웹> 웹 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 이상 솔루션을 추가합니다.
나는 같은 문제를 겪었다. 해결책은 너무 쉽다.
"Solotion 용 Nuget 패키지 관리"에서 solotion install Microsoft.ASP.NET.WebApi를 마우스 오른쪽 단추로 클릭하십시오.
붐 그게;)
'Programming' 카테고리의 다른 글
모드를 찾기위한 내장 함수가 있습니까? (0) | 2020.02.28 |
---|---|
git의 다른 브랜치를 기반으로 특정 커밋을 옮기는 방법은 무엇입니까? (0) | 2020.02.28 |
특성 대신 추상 클래스를 사용하면 어떤 이점이 있습니까? (0) | 2020.02.28 |
@Input () 값이 Angular에서 언제 변경되는지 감지하는 방법은 무엇입니까? (0) | 2020.02.28 |
Visual Studio 2010에서 Boost를 사용하는 방법 (0) | 2020.02.28 |