【问题标题】:can a restful URL consist if "?" symbol?一个安静的 URL 是否可以包含“?”象征?
【发布时间】:2015-10-18 11:49:24
【问题描述】:

我在很多地方读过,一个安静的 url 应该用斜线分隔的名称来识别 rresources,如下所示

http://www.example.com/customers/33245/orders
http://www.example.com/customers/33245/orders/8769/lineitems 

Twitter声称它有一个restful api。但是它的一些api url包含“?”。

 https://api.twitter.com/1.1/search/tweets.json?q=%40twitterapi

甚至 facebook api url 都有“?”。那么这些api可以称为restful api吗?

【问题讨论】:

    标签: facebook api rest twitter


    【解决方案1】:

    是的,restful 地址是可能包含查询参数的 URI。有一些最佳实践,但没有什么说 RESTful API 可能没有“?”

    【讨论】:

    • 但 twitter 可以将这些查询参数以斜线分隔以使其更加安静。他们为什么不呢?
    • 拥有查询参数并没有减少它的宁静。很多时候可选值放在查询参数中。
    【解决方案2】:

    包含查询字符串(“?”和后面的所有内容)的 URL 与 API 是否是 RESTful 无关。查询字符串是定义此媒体类型资源的 URL 的一部分。资源的标识符是在查询字符串中还是在 URL 的路径中并不重要。

    很少有 API 像 Roy Fielding 的 dissertation on the REST architecture 所定义的那样是宁静的。 Roy 甚至在 2008 年通过blog article 解决了最严重的违规行为。

    偏爱其中一种存在审美和 SEO 问题。但两种方式都可以让人放松。

    【讨论】:

      【解决方案3】:

      一般用于直接标识资源的参数用/分隔的路径参数表示

      http://www.example.com/customers/33245/orders
      http://www.example.com/customers/33245/orders/8769/lineitems 
      

      如果资源可以以多种方式显示,例如语言,可以将语言声明为查询参数:

      http://www.example.com/customers/33245/orders?lang=fr
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-19
        • 1970-01-01
        • 1970-01-01
        • 2021-03-09
        • 2014-09-19
        • 1970-01-01
        • 2019-10-12
        • 2015-07-14
        相关资源
        最近更新 更多