在 MVC 5 项目中同化 WebApi 控制器
本文关键字:WebApi 控制器 MVC 项目 | 更新日期: 2023-09-27 18:34:04
我精通MVC 5,但Web api 2对我来说是新的。我正在尝试将 webapi 控制器添加到我的 MVC 项目中,但我无法访问它的路径。Iv'e 在一个名为 webapi 的新文件夹中添加了 Web api 控制器,控制器的名称是 searchcontroller,在我的 MVC 5 项目中。我无法访问它的路径,应该是:/api/search/get.我认为这可能与我的应用程序在全局 Ajax 中的启动有关:
请帮忙!这是应用程序启动中的代码:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RouteConfig.RegisterRoutes(RouteTable.Routes);
GlobalConfiguration.Configure(config =>
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "ApiById",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional },
constraints: new { id = @"^[0-9]+$" }
);
config.Routes.MapHttpRoute(
name: "ApiByName",
routeTemplate: "api/{controller}/{action}/{name}",
defaults: null,
constraints: new { name = @"^[a-z]+$" }
);
config.Routes.MapHttpRoute(
name: "ApiByAction",
routeTemplate: "api/{controller}/{action}",
defaults: new { action = "Get" }
);
});
控制器代码:
public class WebAPISearchReultsController : ApiController
{
public IEnumerable<ICE.Logic.ArticleSearchResult> Get(string searchQuery)
{
return SearchLogic.Instance.GetArticleSearchResults(searchQuery);
}
}
我会像这样构造 API 方法......
[Route("api/webapisearchreults")]
[HttpGet]
public HttpResponseMessage Get([FromUri]string searchQuery)
{
var data = SearchLogic.Instance.GetArticleSearchResults(searchQuery);
var response = Request.CreateResponse(HttpStatusCode.OK, data);
return response;
}
然后,您可以检查数据,如果没有数据或异常等,则可以检查返回的HttpStatusCode
。 您可以将状态代码设置为有意义的内容。
编辑: WebApiConfig
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}