【问题标题】:Old Style URL for Controller actions in ASP.NET Core 2.0 MVCASP.NET Core 2.0 MVC 中控制器操作的旧样式 URL
【发布时间】:2017-09-06 05:43:55
【问题描述】:

我正在迁移使用 ASP.NET WebAPI 2 开发的 REST API。在此实现中,我使用旧样式的 url 来执行我的操作,例如

http://example.com/apiserver/api/v1/members/getbynumber?membershipNo=109900036319 但是当迁移到 .Net core 2.0 时,我看到操作的默认 url 样式类似于 http://example.com/apiserver/api/v1/members/109900036319,我没有看到任何关于如何使用旧样式的示例。

如何设置我想使用哪一个或同时支持这两种方案。 提前致谢。

【问题讨论】:

    标签: url asp.net-web-api asp.net-web-api2 asp.net-core-mvc


    【解决方案1】:

    假设您有一个MembersController 和一个GetByNumber 操作:

    [Route("api/v1/[controller]/[action]")]
    public MembersController : Controller
    {
        [HttpGet("")]
        public IActionResult GetByNumber(long membershipNo)
        {
            return Ok();
        }
    }
    

    这里,控制器上的RouteAttribute 为所有操作设置了 URL 前缀,因此它们将是 /api/v1/members/actionname

    如果您还想要小写 URL,请在 ConfigureServices 中添加以下内容 Startup

    services.Configure<RouteOptions>(options => options.LowercaseUrls = true);
    

    如果需要,您还可以在 MVC 中间件路由构建器中指定该路由模板。

    【讨论】:

    • 如果可以,您能否将答案标记为已接受?它将帮助其他有类似问题的人找到它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-14
    • 2018-09-21
    • 1970-01-01
    • 1970-01-01
    • 2010-12-15
    • 2019-04-15
    • 1970-01-01
    相关资源
    最近更新 更多