正在设置自定义API路由

本文关键字:API 路由 自定义 设置 | 更新日期: 2023-09-27 17:58:04

在此使用ASP.NET 4.6。

我有一个控制器:

public class ComputerController : ApiController
{
    ...
    [HttpGet]
    [Route("api/computer/ping")]
    public IHttpActionResult Ping(int id)
    {
        return Ok("hello");
    }
    ...
}

主要根据这个答案(看看MSTdev的答案),我的WebApiConfig.cs:中有这个

// So I can use [Route]?
config.MapHttpAttributeRoutes();
// handle the defaults.
config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

这条路不通。我总是收到

No HTTP resource was found that matches the request URI
'http://localhost:29365/api/computer/ping'.

这似乎是一个简单的问题,但我仍然被难住了。有什么帮助吗?

正在设置自定义API路由

您的路由缺少{id}参数。示例

[Route("api/category/{categoryId}")]
public IEnumerable<Order> GetCategoryId(int categoryId) { ... }

你的控制器应该是这样的:

public class ComputerController : ApiController
{
    ...
    [HttpGet]
    [Route("api/computer/ping/{id}")]
    public IHttpActionResult Ping(int id)
    {
        return Ok("hello");
    }
    ...
}