ASP.NET Core의 MVC6은 종종 두 세계를 모두 지원해야하기 때문에 두 패턴을 하나로 병합했다는 사실을 좋아합니다. 당신이 표준 MVC 조정할 수 있다는 것을 사실이지만 Controller
(그리고 / 또는 당신의 자신의 개발 ActionResult
클래스)의 역할 및 단지처럼 행동하는 ApiController
데, 그 위에 : 그것을 유지하고 시험을하기가 매우 어려울 수 있습니다 컨트롤러 , 리턴 할 방법을 ActionResult
다른 사람들과 혼합 원시 / 직렬화 /IHttpActionResult
데이터를 하는 것은 개발자의 관점에서 볼 때 혼동 될 수 있습니다. 혼자서 작업하지 않고 다른 개발자가 해당 하이브리드 방식으로 빠르게 진행해야하는 경우에는 더욱 그렇습니다.
지금까지 ASP.NET 비 핵심 웹 응용 프로그램에서이 문제를 최소화하기 위해 얻은 최고의 기술은 웹 API 패키지를 MVC 기반 웹 응용 프로그램으로 가져 와서 올바르게 구성하는 것입니다. 세계 : Controllers
뷰, ApiControllers
데이터
그렇게하려면 다음을 수행해야합니다.
- NuGet :
Microsoft.AspNet.WebApi.Core
및을 사용하여 다음 웹 API 패키지를 설치하십시오 Microsoft.AspNet.WebApi.WebHost
.
- 하나 이상의 ApiController를
/Controllers/
폴더에 .
- 다음 WebApiConfig.cs 파일을
/App_Config/
폴더에 추가하십시오 .
using System.Web.Http;
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 }
);
}
}
마지막으로 위의 클래스를 Startup 클래스 에 등록해야합니다 ( Startup.cs
또는Global.asax.cs
당신이 OWIN 시작 템플릿을 사용하거나하지 않는 경우, 따라).
Startup.cs
public void Configuration(IAppBuilder app)
{
// Register Web API routing support before anything else
GlobalConfiguration.Configure(WebApiConfig.Register);
// The rest of your file goes there
// ...
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
ConfigureAuth(app);
// ...
}
Global.asax.cs
protected void Application_Start()
{
// Register Web API routing support before anything else
GlobalConfiguration.Configure(WebApiConfig.Register);
// The rest of your file goes there
// ...
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
// ...
}
이 접근법은 장단점과 함께 내 블로그에 작성한 이 게시물에 자세히 설명되어 있습니다.
ApiController
및Controller
그래서 당신이 사용하는 경우 새로운 .NET 더 이상 ApiController에 대해 걱정할 필요가 없습니다 - docs.microsoft.com/en-us/aspnet/core/tutorials/first-web- api