5

DogManagementProプログラムがクライアント/サーバーアーキテクチャで記述されたアプリケーションであると仮定します。このプログラムを購入した顧客は、自分のPCでサーバーを実行し、ローカルまたはリモートでアクセスすることになっています。

DogManagementProRESTAPIで「すべての犬を一覧表示する」操作をサポートしたいとします。

したがって、GET tohttp://localhost/DogManagerPro/api/dogsは、次の応答を今すぐフェッチする必要があります。

<dogs>
  <dog>http://localhost/DogManagerPro/api/dogs/ralf</dog>
  <dog>http://localhost/DogManagerPro/api/dogs/sparky</dog>
</dogs>

ローカルLANでリモートアクセスしたい場合、[マシンのローカルIPは192.168.0.33です] GETは何をhttp://192.168.0.33:1234/DogManagerPro/api/dogsフェッチする必要がありますか?

それは次のようになります:

<dogs>
  <dog>http://localhost/DogManagerPro/api/dogs/ralf</dog>
  <dog>http://localhost/DogManagerPro/api/dogs/sparky</dog>
</dogs>

多分:

<dogs>
  <dog>http://192.168.0.33/DogManagerPro/api/dogs/ralf</dog>
  <dog>http://192.168.0.33/DogManagerPro/api/dogs/sparky</dog>
</dogs>

次のようなパス要素だけを返すことで、問題を完全に解決する必要があると主張する人もいます。

<dogs>
  <dog>/DogManagerPro/api/dogs/ralf</dog>
  <dog>/DogManagerPro/api/dogs/sparky</dog>
</dogs>

最善の方法は何ですか?

4

2 に答える 2

6

私は個人的に常に非絶対 URL を使用してきました。リバース/キャッシュプロキシなど、他のいくつかの問題も解決します。

ただし、クライアントにとってはもう少し複雑です。ドキュメントをそのまま保存したい場合は、ベース URL を保存するか、内部 URL を拡張する必要があることを意味する場合があります。

完全な URL ルートを選択する場合は、HTTP_HOST の使用はお勧めしませんが、複数の仮想ホストと環境変数をセットアップして使用します。これにより、後でオリジンサーバーの前にプロキシが必要になった場合に問題が解決します。

于 2012-07-12T19:26:06.723 に答える
0

Hostクライアントが送信したヘッダーに基づいて作成された絶対 URL と言えます。

<dogs>
  <dog>http://192.168.0.33:1234/DogManagerPro/api/dogs/ralf</dog>
  <dog>http://192.168.0.33:1234/DogManagerPro/api/dogs/sparky</dog>
</dogs>

返される URI は、クライアントが解決できるものでなければなりません。

于 2012-07-12T16:06:03.430 に答える