代码之家  ›  专栏  ›  技术社区  ›  Spike Williams

使用restfulurl能给我带来什么?

  •  25
  • Spike Williams  · 技术社区  · 14 年前

    我一直在阅读关于REST的文章,我想知道使用它有什么好处。具体来说,REST样式的url有什么优点,使它们比更典型的带有查询字符串的GET请求更值得实现?

    为什么这个网址是:

        http://www.parts-depot.com/parts/getPart?id=00345
    

    被认为不如这个?

        http://www.parts-depot.com/parts/00345
    

    在上述示例中(取自 here )第二个URL确实更优雅、简洁。但这是有代价的。。。第一个URL很容易用任何web语言实现,开箱即用。第二种方法需要额外的代码和/或服务器配置来解析出值,还需要额外的文档和时间来向初级程序员解释系统,并向同行证明它的合理性。

    8 回复  |  直到 14 年前
        1
  •  12
  •   Darrel Miller    14 年前

    希望如果你让你的URL引用一个名词,那么你就有更好的机会正确实现HTTP动词。除此之外,一个URL和另一个URL绝对没有优势。

    实际上,URL的内容与RESTful系统完全无关。它只是一个标识符。

    重要的不是它看起来像什么,而是你用它做什么。

        2
  •  6
  •   RedYeti    10 年前

    http://tomayko.com/writings/rest-to-my-wife (遗憾的是,它现在已经被取下了,但仍然可以在屏幕上看到 web.archive.org )

    所以不管怎样,http这个协议部署 他的朋友们到处都是 当您转到网页时,浏览器 进进出出一个网页。

    ...

    书写复杂的层次 做这件事的规范 有用的或雄辩的。名词不是 数十年的实际现场使用和验证 技术和重新开始 看起来很像其他人的东西 正在使用HTTP,但只是因为 保安人员少了。我们在交易 巫师。

        3
  •  5
  •   brabster    14 年前

    另外,也许你不能用其他的HTTP动词来处理第一个-例如,你需要一个新的putPart方法。第二个可以与不同的动词(如PUT、DELETE、POST)一起重用以“操纵”资源?我想你也在说GET两次,一次用动词,一次用方法,所以第二次更符合HTTP协议的意图?

        4
  •  4
  •   Daniel DiPaolo    14 年前

        5
  •  2
  •   Diego Dias    14 年前

    restimo的最大优点是它允许一种干净的方式来使用HTTP动词(这在REST服务中是最重要的)。实际上,使用REST意味着您正在使用HTTP协议及其动词。

    使用你的网址,想象你想发布一个“部分”,而不是得到它

    第一种情况应该是这样的:

    你用的是一个GET,你应该用一个post

    http://www.parts-depot.com/parts/postPart?param1=lalala&param2=lelele&param3=lilili
    

    http://www.parts-depot.com/parts
    

    在正文上,(例如)这样的xml

    <part>
       <param1>lalala<param1>
       <param2>lelele<param1>
       <param3>lilili<param1>
    </part>
    
        6
  •  1
  •   Greg Beech    14 年前

    URI语义由 RFC 2396 . 与这个问题特别相关的摘录是第3.3节。”路径组件“:

    路径组件包含特定于权限(或 在该计划和权限范围内。

    和3.4“查询组件”:

    查询组件是一个由

    请注意,查询组件不是资源标识符的一部分,它只是由资源解释的信息。

    因此,由第一个示例标识的资源实际上只是 /parts/getPart . 如果您的意图是URL应该标识一个特定的part资源,那么第一个示例不会这样做,而第二个示例会这样做( /parts/00345 )是的。

    因此,第二种类型的URL的“优点”是它在语义上是正确的,而第一种则不是。

        7
  •  0
  •   S.Lott    14 年前

    “第二个需要额外的代码 和/或要分析的服务器配置 “输出值,”

    真的?你选择了一个糟糕的框架。我的经验是,RESTful版本的代码量完全相同。也许我只是幸运地进入了一个很酷的框架。

    以及花在解释系统上的时间 “初级程序员”

    只有一次。他们拿到之后,你就不用再解释了。

    “向同龄人证明这一点。”

    只有一次。他们拿到之后,你就不用再解释了。

        8
  •  0
  •   Mike    14 年前

    将查询部分用于某个较大资源的子集—分页就是一个很好的例子,说明了这一点。