rest - Web API url 的测试版本

标签 rest api asp.net-web-api restful-architecture restful-url

对于我们的 Web api 项目,我们使用以下 url 版本控制系统:

https://{fqdn}/{apiVersion}/{apiResourceName}/{resourcePath}?{parameters}

例如,我们可以有如下内容:

https://myapi.mysite.com/v1/customer/2

现在考虑到上述情况,假设您要向客户发布两个版本(实时、测试)。一个是实时版本(使用实时数据),另一个是测试(使用测试数据进行客户开发测试)。

对于现场直播,我可以轻松使用我提到的那个:https://myapi.mysite.com/v1/customer/2 .

上面api的测试版本怎么命名? api url 版本 v1 的测试版本是什么?可以指定测试api url吗?

使用 url 版本控制时,API {fqdn} 的完全限定域名的最佳做法是什么?

最佳答案

确实有几种方法可以做到这一点。

例如,一种方法是简单地使用属性路由来为其提供不同的路径。创建一个单独的方法,给它一个路径 /vtest/customer/2例如,如果用户访问此 /vtest/版本(或 v2 或 3 或其他)然后返回测试数据/新版本。见 example in this question

另一种方法是将您的“测试数据”API 托管在您服务器的不同应用程序中,并让您的 web.config 指向您的数据库/源数据的测试版本。使用 IIS,您将配置两个不同的应用程序(一个用于测试,另一个用于实时)并且基本 URL 会有所不同,例如:https://myapi.mysite.com/appname1/v1/customer/2对比 https://myapi.mysite.com/appname2/v1/customer/2和您的 应用名称 可能类似于 live对比 test .看看this simple example

您也可以将它们完全托管在不同的服务器中,这会导致您的 {fqdn} 在测试版本和实时版本之间发生变化(例如 server.com/v1/customer/2testserver.com/v1/customer/2 )——这就是我在目前的工作中所做的,我发现它非常有效,因为它隔离了实时/测试数据(和 API 版本),避免了它们之间的混淆。

我还找到了 this blog post详细说明如何使用 namespace 执行此操作

换句话说,不只有一种最佳/正确的方式来做你想做的事,这一切都归结为你(或你的公司/老板/团队)希望如何在你的 API 中构建和控制测试与实时数据。看看这些选项,看看哪一个最适合你的情况,希望我能帮上忙。

关于rest - Web API url 的测试版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41364213/

相关文章:

java - Swagger 2 如何仅从请求示例中排除属性

rest - 您如何从 CXF Rest Client 获取日志记录?

c# - 如何使用 C# HttpClient 正确执行 JSON 对象的 HTTP Post?

java - java中的图像比较

java - 用 Java 开发一个简单的插件模块化 rest 可达服务

asp.net-web-api - 如何在 WebAPI 中访问序列化的 JSON

c# - 如何将本地数据库上传到 Windows Azure?

POST 和 GET/PUT 的 Rest API 不同模型

rest - HTTP 2.0 与 HTTP 1.1 在服务器到服务器通信上的连接池

rest - 如何使用 REST API 将文件和附件上传到 sobject 记录?