测试Web API网址的版本

MHO*_*OOS 7 api rest restful-url restful-architecture asp.net-web-api

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

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

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

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

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

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

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

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

Yur*_*riW 3

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

例如,一种方法是简单地使用属性路由来为其提供不同的路径。创建一个单独的方法,为其提供一个路径,/vtest/customer/2例如,如果用户访问此/vtest/版本(或 v2 或 3 或其他版本),则返回测试数据/新版本。请参阅此问题中的示例

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

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

我还发现这篇博客文章详细介绍了如何使用命名空间执行此操作

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