如何配置带子路径的URL路由 实现同控制器方法请求映射
解答
完全可以,这是WebAPI和MVC开发里最常规的用法,同属账号模块的这三个接口放在同一个控制器里是非常合理的组织方式,只要路由配置正确,完全能准确映射到对应的处理方法。
具体匹配逻辑
你给出的三个接口路径结构是/api/account/{动作名},刚好契合WebAPI默认的路由模板api/{controller}/{action}/{id}(id为可选参数),不需要额外写自定义路由规则就能自动匹配:
- 路径里的
account段对应名为AccountController的控制器 - 路径最后一段对应控制器里的同名公开方法
/api/account/create→ 对应AccountController内的Create方法/api/account/login→ 对应AccountController内的Login方法/api/account/resetpass→ 对应AccountController内的ResetPass方法
参考实现
你只需要新建AccountController,按接口需求写对应方法即可,基础结构参考如下:
// .NET Framework 下的WebAPI 继承ApiController,.NET Core 下继承ControllerBase即可 public class AccountController : ApiController { // 对应POST请求 /api/account/create [HttpPost] public IHttpActionResult Create(CreateAccountRequest request) { // 编写创建账号的业务逻辑 } // 对应POST请求 /api/account/login [HttpPost] public IHttpActionResult Login(LoginRequest request) { // 编写登录校验逻辑 } // 对应POST请求 /api/account/resetpass [HttpPost] public IHttpActionResult ResetPass(ResetPasswordRequest request) { // 编写重置密码逻辑 } }
小提示:记得给方法加上对应HTTP请求方式的特性(比如提交数据用
[HttpPost],查询用[HttpGet]),避免出现请求方法不匹配的405错误。
这种按业务模块聚合接口的控制器组织方式是官方推荐的写法,后续维护账号相关逻辑时只需要找这一个控制器就行,比零散拆分控制器要清晰很多。
内容的提问来源于stack exchange,提问作者Haoest
相关产品推荐
相关产品推荐

