【问题标题】:What's the point of the "api" path segment in newly created ..net core API project新创建的 ..net 核心 API 项目中的“api”路径段有什么意义
【发布时间】:2019-06-29 08:38:59
【问题描述】:

当我只创建一个新的 API .Net Core 项目时,默认路由是 [Route("api/[controller]")] 导致类似 http://localhost:1234/api/customers。当需要部署我的服务 api.wonderfulweb.com 时,它看起来像这个 api.wonderfulweb.com/api/customers。

如果您与 UI 控制器共享同一个项目,我只能看到拥有 api 路径段的意义。在我看来,单个 API 项目的默认设置是错误的,应该是 [Route("[controller]")] 或 [Route("v1/[controller]")]?

【问题讨论】:

  • 选择一个特定的项目类型只会搭建不同的文件(即 API 样式控制器 vs. MVC 样式控制器 vs. Razor Pages)。一切仍然是 ASP.NET Core;任何子项目类型之间都没有真正有意义的区别。换句话说,即使你搭建了一个 API 项目,你也可以添加一些 Razor 页面,或者一些 MVC 控制器。脚手架采用安全的路线命名默认值,因此事情不会相互影响。正如尼克所说,你可以随时改变它。
  • 感谢您查看此内容,我明白您在说什么,但是如果我正在创建一个 API 项目,那就是它,而不是混合项目。如果它变成那样,那么您可以相应地更改路径。也许我有点迂腐,但我认为 API 的默认值应该是:api.xyz.com/v1/customers/abc 而不是 api。 xyz.com/api/v1/customers/abc
  • 多数人的利益大于少数人。设计框架很困难,因为开发人员面临的各种场景几乎一样多。目标是尽可能减少摩擦,这意味着放置一个“api”前缀,这样路由冲突就不会发生开箱即用。这也是为什么这很容易改变的原因。老实说,这真的不是一个可以跳过的圈子。
  • 仅供参考,看起来微软正在从3.0.0-preview5GitHub post here中的新api模板的路径中删除api段

标签: rest asp.net-core


【解决方案1】:

该段只是一个示例。您可以随意命名它,甚至完全删除该段。

不同的项目有不同的目标。有些还呈现页面,有些只包含一个 API。 ASP.NET Core 团队决定采用他们发现的安全默认值。但是,就像您提到的那样,对于单个 API 项目,这可能不是必需的。没有错。只是没有必要。

如果您认为 API 项目的默认设置应该更改,您可以在 ASP.NET Core GitHub project 上提出问题。请确保您提到您的意思是默认的 Visual Studio 模板。

【讨论】:

  • “不同的项目有不同的目标”,但是如果我选择了一个 API 项目,那么这很明显(我认为)意图是什么。我正在考虑提出一个问题,但不知道去哪里找……谢谢。
  • @LeeAlexander 非常正确。老实说,我总是从我所有的 api 项目中删除 /api 段。如果你做了一个链接,你可以在这里发布你的问题吗?我对它得到的响应很感兴趣。
  • 我已经创建并发布在 ASP.NET 项目上你可以找到它here
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-28
相关资源
最近更新 更多