Web API 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或其他),然后返回测试数据/新版本。请参阅此问题中的示例

另一种方法是在服务器中的另一个应用程序中托管您的"测试数据" API,并具有您的Web.config点来测试数据库/源数据的版本。使用IIS,您将配置两个不同的应用程序(一个用于测试,另一个用于实时),并且基本URL将有所不同,例如: https://myapi.mysite.com/appname1/v1/customer/2 vs https://myapi.mysite.com/appname2/v1/customer/2,而您的 AppName 可能与live相比test。看看这个简单的示例

您也可以完全将它们托管在不同的服务器中,这将导致您的{fqdn}在测试和实时版本之间进行更改(例如server.com/v1/customer/2testserver.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端点,而应在此类环境中使用不同的服务器:

for prod/live: https://myapi.mysite.com/v1/customer/2

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

dev: https://myapi.mysitedev.com/v1/customer/2

您需要为要击中的不同后端端点配置环境特定属性。喜欢:test.properties/dev.properties/live.properties

随着我在API开发的经验,我发现有两种制作服务器(test/developer)/live的方法我将以您的链接类型展示一个示例 https://{fqdn}/{apiversion}/{apiresourcename}/{resourcepath}?{parameters}

在您的情况下,您可以使用或基于设置链接基于测试类型

什么是基于设置?

基于设置的是您的服务器,例如https://rest.mysite.com/v1/customer/2如果您或您的客户将在HE的设置服务器状态中设置为 test> test ,并且作为live -live- live ,将充当测试。在某些情况下,此方法很好,但是为了进行测试和同时生活,不建议这种类型。

什么是链接| url | uri基于?

此方法具有2种识别请求类型是测试或实时

  1. 一种方法是将测试设置为参数https://api.mysite.com/ test/v1/customer/2,没有测试就可以实时
  2. 第二种方法是将API设置为tentapi或apitest,例如https:// testapi .mysite.com/v1/customer/2或https://https:// apitest mysite.com/v1/customer/2。这样,客户可以进行测试和现场测试,他也可以进行测试和实时项目。

和不要为安全忘记,请务必检查客户并在提供实时API访问之前进行验证。

作为一个选项您可以使用自定义的标头。如果请求包含自定义标头 ->重定向请求到测试版本的API。

相关内容

最新更新