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を使用して可能ですか?

追加の質問: etc を使用する代わりに、/v1/ /v2/次のような Accept ヘッダーを使用して API をバージョン管理した場合:

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

それを別のディレクトリにマップするにはどうすればよいですか?

4

1 に答える 1

1

ドキュメントルートが次のように設定されていれば問題ありません

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

次に、ドキュメント ルート内にディレクトリ/v1/と内部を配置します。Acceptヘッダー/v2/について。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 に答える