我正在重做我的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.com
和api.example.com/v2/
指向/var/www/html/api-v2.example.com
。
[编辑,我最初说的子目录,我觉得很混乱,但实际上我认为我希望它们是完全独立的网站]
这可以使用Apache吗?
其他问题:如果不是使用/v1/
/v2/
等,而是使用Accept标头对我的API进行版本化,例如:
Accept: application/vnd.api-example-com-v2+json
我如何将其映射到不同的目录?
答案 0 :(得分:1)
如果您将文档根目录设置为
,那就没问题/var/www/html/api.example.com
然后在文档根目录中包含目录/v1/
和/v2/
。至于接受标题。您可以使用mod_rewrite匹配:
RewriteEngine On
RewriteCond %{HTTP_ACCEPT} application/vnd.api-example-com-(.*)\+json
RewriteCond %1::$1 !^(.*)::\1
RewriteRule ^(.*)$ /%1/$1 [L]
如果这是您想要的,那么您需要在vhost / server配置中创建一些别名:
AliasMatch ^/v([0-9]+)/(.*)$ /var/www/html/api-v$1.example.com/$2