[Route("api/Users/{userId}")] public IHttpActionResult GetUserById(int userId) { var user = _userRepository.GetUserById(userId); if (user == null) { return NotFound(); } return Ok(user); }
在这个例子中,控制器的路由为“api/Users/{userId}”,通过传入的参数来匹配路由。
namespace MyWebApi.Controllers { [RoutePrefix("api/Users")] public class UsersController : ApiController { [HttpGet] [Route("{userID}")] public IHttpActionResult GetUserById(int userId) { ... } } }
在这个例子中,控制器的命名空间为“MyWebApi.Controllers”,控制器类名为“UsersController”。
public static class WebApiConfig { public static void Register(HttpConfiguration config) { config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
这个配置文件启用了Web API的路由,可以在命名空间中映射控制器和操作。
在控制器类头部添加版本号的路由特性:
[ApiVersion("1.0")] [Route("api/v{version:apiVersion}/[controller]")]
[Authorize] [RoutePrefix("api/Users")] public class UsersController : ApiController { ... }
在这个例子中,只有授权用户才能访问控制器中的操作。