【发布时间】: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