c# - REST API 的版本控制格式
问题描述
我尝试按照Microsoft REST API 指南了解 REST API 的版本控制策略,并尝试将其用于我的 ASP.NET Core 解决方案。
从指南:
支持指定 REST API 请求版本的两个选项:
嵌入在请求 URL 的路径中,在服务根的末尾:
https://api.contoso.com/v1.0/products/users
作为 URL 的查询字符串参数:
https://api.contoso.com/products/users?api-version=1.0
在这两个选项之间进行选择的指导如下:
...
- 保证其 REST API 的 URL 路径稳定性的服务,即使通过 API 的未来版本,也可以采用查询字符串参数机制。这意味着 API 中描述的关系的命名和结构在 API 发布后无法演变,即使跨版本发生重大更改也是如此。
- 无法确保跨未来版本的 URL 路径稳定性的服务必须将版本嵌入到 URL 路径中。
我想我不太明白“不能进化”是什么意思——
这意味着 API 中描述的关系的命名和结构在 API 发布后无法演变,即使跨版本发生重大更改也是如此。
您能否给出一个扩展的定义?
您是否有任何无法确保未来版本的 URL 路径稳定性的服务示例?
谢谢 : )
解决方案
如果您预计 URL 本身中的资源名称会发生变化,Microsoft 指南建议不要使用查询参数来控制主要版本。
使用路径参数版本控制,您可以:
https://api.contoso.com/v1.0/products/users
https://api.contoso.com/v2.0/items/customers
如果使用查询参数,他们建议更改资源名称,其中某些资源仅支持某些版本参数。
正如@Archer 所说,最常见的做法似乎是使用没有点或颠覆的主要版本,并且查询参数版本很少见,除了 FourSquare 之类的版本日期参数(https://developer.foursquare.com/docs/api /configuration/versioning ),它通常与主要路径版本一起使用,并且通常控制比资源名称更改更小的 API 更改。
推荐阅读
- ios - 为什么使用 iOS 设备上的编译器/工具链为各种项目构建失败并显示“不允许操作”?
- javascript - 下拉值更改后重新加载数据表
- javascript - 如何在 jQuery 验证中自定义 submitHandler()?
- python - python 3中的十进制复数
- firebase - 拉取 Cloud Firestore 中的所有用户数据
- networking - NS2:链接的随机延迟
- .net - 没有 LINQ 的 AutoMapper
- python-3.x - 使用 PyArray_SimpleNewFromData 的正确方法?
- javascript - 使用 fs writeFile 创建文件时 nodeJS 返回类型错误
- powershell-3.0 - 如何使用 powershell 导航在转换的 Json 对象中找到的 html