Visual Studio 2012에서 개발 된 ASP.NET MVC 4 웹 응용 프로그램 프로젝트에 ASP.NET 웹 API 를 추가하고 싶습니다. 프로젝트에 작동하는 웹 API를 추가하려면 어떤 단계를 수행해야합니까? 나는 ApiController에서 파생 된 컨트롤러가 필요하다는 것을 알고 있지만 그것이 내가 아는 전부입니다.
더 자세한 정보가 필요하면 알려주십시오.
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
.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
자세한 내용은 .
Install-Package Microsoft.AspNet.WebApi
지금 원합니다 . nuget.org/packages/Microsoft.AspNet.WebApi
내 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);
Install-Package Microsoft.AspNet.WebApi
2. 새 항목 "Web API Controller Class (v2.1)"를 추가하십시오. 결과 : API 컨트롤러를 추가하지만 변경하지는 않습니다 Application_Start
. 오윈과 함께.
아래 이미지와 같이 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 이상 솔루션을 추가합니다.
System.Net.Http
했지만 그 외에도 매력처럼 작동했습니다!