Web API控制器路径?

时间:2014-02-12 19:47:13

标签: c# asp.net-web-api asp.net-web-api2

我是Web API的新手并遵循一些示例,但我无法确定指定控制器名称的位置。

我在global.asax中有这个:

protected void Application_Start(object sender, EventArgs e)
{
    RouteTable.Routes.MapHttpRoute(
    name: "API Controller",
    routeTemplate: "api/{controller}/{action}/{id}",
    defaults: new { id = System.Web.Http.RouteParameter.Optional }
    );
}

我有一个名为TestAPI.cs的控制器

这是内容:

namespace Testing
{
    public class TestAPI : ApiController
    {
        // GET api/<controller>
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }

        // GET api/<controller>/5
        public string Get(int id)
        {
            string test= "Hello!";
            return test
        }
    }
}

我只在其中放置“返回测试”作为Stack Overflow的示例,因为它包含大量代码。

所以,如果我在jQuery中使用它,我将使用什么路径作为控制器?

4 个答案:

答案 0 :(得分:5)

除了有关Web Api控制器名称的命名约定外,您还需要更改路由配置。见下文:

1)更改您的TestAPI控制器,如下所示:

 public class TestAPIController : ApiController

2)在Application_Start方法中更改MapHttpRoute,如下所示:

    GlobalConfiguration.Configuration.Routes.MapHttpRoute(
      name: "API Controller",
      routeTemplate: "api/{controller}/{id}",
      defaults: new { id = RouteParameter.Optional }
      );

注意:不要忘记将实际文件名格式TestAPI.cs更改为TestAPIController.cs

答案 1 :(得分:1)

将控制器重命名为TestApiController,并从路径中删除{action}参数。

答案 2 :(得分:0)

那应该只是

http://[yourserver]/[yourapp]/api/testapi

http://[yourserver]/api/testapi

取决于您设置应用程序的方式

答案 3 :(得分:0)

即使是WebApi控制器,您的控制器名称是否应该以“Controller”结尾?

我认为

public class TestAPI : ApiController

应该是

public class TestAPIController : ApiController