【问题标题】:Change the "/api" part of the url in ASP.Net Core更改 ASP.Net Core 中 url 的“/api”部分
【发布时间】:2017-07-14 11:30:26
【问题描述】:

当我运行一个 .NET Core Web API 项目时,我得到一个如下所示的 URL:http://localhost:5000/api/...

如何将 URL 的 /api/ 部分更改为其他内容?即 - http://localhost:5000/myservice/...

我使用 Kestrel 作为我的网络主机。

【问题讨论】:

  • 这应该是 Startup.cs 中路由配置的一个相当简单的更改。

标签: asp.net-core .net-core asp.net-core-webapi kestrel


【解决方案1】:

这取决于您如何设置项目。默认情况下,我相信它使用属性路由。在您的控制器中,您应该会看到类似这样的内容

[Route("api/[controller]")]
public class ValuesController : Controller
{

只需将 [Route("api/[controller]")] 更改为 [Route("myservice/[controller]")]

如果你想在全球范围内这样做,你可以这样做。

app.UseMvc(routes =>
{
   routes.MapRoute("default",  "myservice/{controller=values}/{action=get}/{id?}");
});

虽然我自己不使用它,但它也不完全是 MS 推荐的 Web Api。你可以阅读更多here

混合路由 MVC 应用程序可以混合使用常规路由和属性路由。为浏览器提供 HTML 页面的控制器通常使用常规路由,而为 REST API 提供服务的控制器使用属性路由。

【讨论】:

  • 啊,谢谢!我会将此标记为答案。在相关的说明中,有没有办法在全局而不是在每个控制器中做到这一点?
  • 是的,我自己喜欢属性路由,因为我可以控制 url,但你可以做到。让我编辑答案,让代码更清晰。
【解决方案2】:

您可以只安装microsoft.aspnetcore.http.abstractions nuget 包并在IApplicationBuilder 上使用IApplicationBuilder 上的Startup.Configure 方法,如下所示:

app.UsePathBase("/api/v1");

【讨论】:

    猜你喜欢
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    • 2020-03-23
    • 2016-12-31
    • 2020-02-19
    • 1970-01-01
    • 2011-11-23
    • 2015-07-14
    相关资源
    最近更新 更多