【发布时间】:2012-07-12 16:01:45
【问题描述】:
假设 DogManagementPro 程序是用客户端/服务器架构编写的应用程序,购买它的客户应该在自己的 PC 上运行服务器,并在本地或远程访问它。
假设我想在 DogManagementPro REST API 中支持“列出所有狗”操作。
所以对http://localhost/DogManagerPro/api/dogs 的 GET 现在应该获取以下响应:
<dogs>
<dog>http://localhost/DogManagerPro/api/dogs/ralf</dog>
<dog>http://localhost/DogManagerPro/api/dogs/sparky</dog>
</dogs>
我想在我的本地局域网上远程访问它,[我机器的本地 IP 是 192.168.0.33]
http://192.168.0.33:1234/DogManagerPro/api/dogs 的 GET 应该获取什么?
应该是:
<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>
最好的方法是什么?
【问题讨论】:
-
还有使用域的选项。然后您将拥有
http://dogmanagerpro/api/dogs/sparky其中dogmanagerpro将被设置为指向服务器正在侦听的特定机器:端口。此选项在更改物理地址方面最灵活,但它需要您的客户端运行自己的域服务器(DNS 服务器),该服务器可以将 DogManagerPro 映射到绝对地址。