Web API网址的测试版本

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

HTTPS:// {FQDN} / {apiVersion} / {apiResourceName} / {resourcePath} {参数}?

比如我们可以有如下的东西:

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

现在考虑上面,假设你想要发布两个版本(live,test)给客户。 一个实时版本(使用实时数据),另一个是测试(使用测试数据进行客户开发测试)。

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

你如何命名上述API的测试版本? 什么是api url版本v1的测试版本? 可以指定测试api网址吗?

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


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

例如,一种方法是简单地使用属性路由来给它一个不同的路径。 例如,创建一个单独的方法,给它一个/vtest/customer/2的路径,如果用户访问这个/vtest/ version(或v2或3或其他),则返回测试数据/新版本。 看到这个问题中的一个例子

另一种方法是将您的“测试数据”API托管在服务器中的其他应用程序中,并使您的web.config指向您测试数据库/源数据的版本。 使用IIS,你会配置两个不同的应用程序(一个用于测试,其他活)和基础URL也会有所不同。例如: https://myapi.mysite.com/appname1/v1/customer/2 VS https://myapi.mysite.com/appname2/v1/customer/2 ,你的appname可以是live vs test 。 看看这个简单的例子

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

我还发现这篇博客文章详细说明了如何使用命名空间完成此操作

换句话说,不仅仅有一种最好/正确的方式来做你想做的事情,这完全归结于你(或你的公司/老板/团队)想要如何在你的API中构建和控制测试与实时数据。 看看这些选项,看看哪一个最适合您的情况,希望我能够提供帮助。


我认为你的问题的标题是误导性的。 您尝试解决的问题不是版本控制(因为您的客户端正在连接到相同版本的应用程序:v1)。 这是关于有多个环境:一个用于实时数据,一个(或更多)用于测试数据。

在我的公司,我们通过主机名解决了这个问题。 在https://live.mysite.com/api/v1上,我们托管了连接到实时数据的API v1。 在https://nodex.mysite.com/api/v1,我们托管连接到测试数据的API v1。 我们的客户可以根据需要请求新的节点(例如client1-devnode.mysite.com/api/v1与client1-testnode.mysite.com/api/v1进行对比测试),每个节点都有自己的一组测试数据。


大多数活动项目针对不同环境的不同服务器。 不要使用不同版本的API端点,您应该针对不同的环境使用不同的服务器,如下所示:

对于Prod / live: https://myapi.mysite.com/v1/customer/2https://myapi.mysite.com/v1/customer/2

对于测试: https://myapi.mysitetest.com/v1/customer/2https://myapi.mysitetest.com/v1/customer/2

对于Dev: https://myapi.mysitedev.com/v1/customer/2https://myapi.mysitedev.com/v1/customer/2

您需要为正在碰到的不同后端端点配置特定于环境的属性。 像:test.properties / dev.properties / live.properties

链接地址: http://www.djcxy.com/p/37791.html

上一篇: Test version of web API url

下一篇: Return promise inside resolve function as its continuation