位于REST ROA中的本地计算机上的资源的URL

时间:2009-07-01 02:50:03

标签: rest

这个问题是关于RESTful ROA(面向资源的架构)。 Web上的资源具有URL(或URI,如果您愿意),例如http://myserver.com/me.jpg

您可以在本地(Windows)计算机上获取如下文件:file:/// C:/MyPictures/me.jpg。这不是一个“通用”资源标识符;如果你在另一台机器上试用它,它就无法正常工作。在你的机器上,这可能是你的照片,而不是我。

假设我想设计一个可以将文件复制到Web服务的应用程序。其他计算机上的其他用户可以从Web服务下载它们,但如果您从原始计算机上使用它们,则可以从本地文件系统中获取它们以提高速度。

是否有任何URI概念引用特定计算机上的文件(如果它恰好是本地计算机)?是否有特定机器的URI概念? IP地址不够;我的机器的IP地址是192.168.0.102,你的也可能是。

我想将照片的多个位置存储为第一选择,第二选择等。首选= file:/// C:/MyPictures/me.jpg但是只有本地机器是它所来的机器从;第二选择= http://myserver.com/me.jpg

说明同一问题的另一种方式:这台机器是唯一的,C://somedir/somefile.jpg上的文件是唯一的。它有唯一的地址吗?一个地址会产生“无路由到主机”或正确的文件,具体取决于您从哪里请求它?

2 个答案:

答案 0 :(得分:1)

  

是否存在URI的概念   指特定的文件   机器,如果碰巧是本地的   机?

让我们遵循逻辑。这是如何确定的? URI绝对必须包含唯一标识机器的名称。

因此,您的机器必须通过公开注册的名称进行识别。您已明确指出私有IP地址不足。

所以答案是:

  • 您的机器必须是公开识别的名称,可以公开访问(通过代理,如果在防火墙后面)。

  • 如果您想在“本地运行案例”中提高效率,该名称还必须直接解析到您的计算机(而非防火墙)。

设置此项取决于机器。但假设您支持支持虚拟服务器代理的NAT防火墙......

  1. 在相应的DNS服务器中注册唯一名称,让它解析为面向公众的IP。

  2. 在防火墙上设置一个代理回内部地址的虚拟服务器。

  3. 在本地计算机上设置网络服务器。

  4. 确保已配置本地计算机本身(在/ etc / hosts或Windows中等效)以将该公共地址映射到192.168地址。

  5. 基本上就是这样。无法想象其他任何事情会如何。不,单个URI不可能被定义为“在这种情况下尝试文件://,或默认为http://”。 URI的定义是一个单一的方案,如下所述:

    http://en.wikipedia.org/wiki/URI_scheme#Generic_syntax

答案 1 :(得分:0)

你既正确又不正确。虽然两台计算机在网段中可以具有相同的名称或相同的IP地址,但它们只存在于该网络中。

如果你想唯一地识别文件和机器,那么file://blackbeauty.mydomain.org/c:\ myfile.txt是完全可以接受的,因为blackbeauty名称是由mydomain“拥有”的。有机

因此,如果您希望URL可解析,则需要一种方法来处理FQDN中的计算机。