我精通MVC 5,但web api 2对我来说是新手。我正在尝试为我的MVC项目添加一个webapi控制器,但我无法访问它的路径。 Iv在一个名为webapi的新文件夹中添加了一个web api控制器,控制器的名称是searchcontroller,Inside My MVC 5 Project。 我无法访问它的路径,应该是: / API /搜索/获取。 我认为这可能与我在全球Ajax中的App Start有关:
请帮忙! 以下是app start中的代码:
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);
}
}
答案 0 :(得分:0)
我会像这样构建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
。您可以将status code设置为有意义的内容。
编辑: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 }
);
}
}