因此这个问题有几个部分。 2个示例端点(最简单的形式):
user/{id}/profile
movie/{id}/info
我希望创建2个控制器(UserController& MovieController)。
- 如何在控制器名称之前实现视图区域?
醇>
这两个都是我认为的视图。因此,我想在控制器之前的URL中添加“视图”,因为两个控制器仅提供视图。我后来希望在不同的地方也有一个不返回视图的用户控制器。 但是, ALL 我的终结点应该以 / api / 开头。
即。我想要这个:
api/view/user/{id}/profile
api/view/movie/{id}/info
但是如何在使用“自定义路由”(即:httpConfiguration.MapHttpAttributeRoutes())时注册一个区域( / view / )?我找不到任何这样的例子吗?
- 我应该在哪里进行版本控制?
醇>
客户端是一个应用程序,需要进行版本控制,以便我们可以在不破坏旧版应用程序的情况下对方法进行更改。
我们不确定放置版本的最佳位置,以及放置如何影响新版本的开发(如果它完全如此?)。
的可能性:
1. api/v1/view/user/{id}/profile
2. api/view/v1/user/{id}/profile
3. api/view/user/{id}/profile/v1
版本整个API。这会将整个API升级到新版本,即使我们只需要一个方法/端点来进行应用程序更改。 我没有看到任何优势吗?
版本区域。与上述相同,受影响的控制器略少。
版本方法。似乎最简单,因为只有单个更改的方法受到影响。但网址非常难看。
有没有人在MVC或Web Api结构中有一个版本控制的例子,它不会升级整个API,但仍会在其URL中保持一个不错的结构?
答案 0 :(得分:0)
我最终使用了NightOwl888建议的https://github.com/Microsoft/aspnet-api-versioning。
1
使我的2个控制器使用const字段扩展另一个控制器,该字段定义了它们应共享的routeprefix:
protected const string RoutePrefix = "api/view/v{version:apiVersion}";
...
[RoutePrefix(RoutePrefix + "/user")]
2
/ v1 / 的位置与此库无关。并允许更新控制器或个人方法,视情况而定。