2

我正在重做我的 API。幸运的是,它是版本化的。耶!但是处理新代码的最佳方法是什么。

基本上; 我有api.example.com/v1/method等。我的网站在 apache 上运行,并api.example.com指向/var/www/html/api.example.com

对于新的 API,我将使用完全不同的框架和代码库等,所以我不想混淆文件。

理想情况下,我想要的是api.example.com/v1/指向/var/www/html/api-v1.example.comapi.example.com/v2/指向/var/www/html/api-v2.example.com.

[已编辑,我最初说的子目录令人困惑,但实际上我认为我希望它们是完全独立的站点]

这可能使用Apache吗?

附加问题:如果我没有使用/v1/ /v2/etc,而是使用 Accept 标头对我的 API 进行版本控制,例如:

Accept: application/vnd.api-example-com-v2+json

我将如何将其映射到不同的目录?

4

1 回答 1

1

如果您将文档根设置为

/var/www/html/api.example.com

然后有目录/v1//v2/文档根目录。至于Accept标头。您可以使用 mod_rewrite 与之匹配:

RewriteEngine On

RewriteCond %{HTTP_ACCEPT} application/vnd.api-example-com-(.*)\+json
RewriteCond %1::$1 !^(.*)::\1
RewriteRule ^(.*)$ /%1/$1 [L]

如果这是您想要的,那么您需要在您的虚拟主机/服务器配置中创建一些别名:

AliasMatch ^/v([0-9]+)/(.*)$  /var/www/html/api-v$1.example.com/$2
于 2013-09-19T09:57:40.083 回答