restful api只使用干净的url—没有url变量或post变量

restful api只使用干净的url—没有url变量或post变量,rest,restful-url,Rest,Restful Url,restful api必须使用get、post、put或delete请求方法。提交的行为和数据完全由uri字符串决定。没有查询参数或post变量 这是真的吗 有效:http://example.com/foo/84 无效:http://example.com/foo/?value=84 有效期: $.ajax({   type: 'POST',   url: "http://example.com/foo/84",   success: success,   dataType: dataType

restful api必须使用get、post、put或delete请求方法。提交的行为和数据完全由uri字符串决定。没有查询参数或post变量

这是真的吗

有效:
http://example.com/foo/84

无效:
http://example.com/foo/?value=84

有效期:

$.ajax({
  type: 'POST',
  url: "http://example.com/foo/84",
  success: success,
  dataType: dataType
});
无效有效:

$.ajax({
  type: 'POST',
  url: "http://example.com/foo/",
  data: 84,
  success: success,
  dataType: dataType
});
编辑
到目前为止,有两个答案,它们相互矛盾。

POST变量绝对可以,否则您将如何提交新资源或更新它

GET参数可以指定资源的呈现方式。所以确实
http://example.com/foo/?value=84
不正确-URL不代表资源


但是,
http://example.com/user/84?fields=first_name,姓就可以了。在这种情况下,您可以使用附加的查询参数来指定您只需要该资源的名字和姓氏。

POST变量绝对可以,否则您将如何提交新资源或更新它

GET参数可以指定资源的呈现方式。所以确实
http://example.com/foo/?value=84
不正确-URL不代表资源


但是,
http://example.com/user/84?fields=first_name,姓就可以了。在这种情况下,您可以使用附加的查询参数来指定您只需要该资源的名字和姓氏。

表示
http://example.com/foo/?value=84
无效,但不完全正确。我的意思是,只要它是一个有效的URL,它就可以工作,并且您可以通过get或post获取参数

另一方面,REST是一种体系结构,它的需求之一是一个干净的URL(不包括带“?”的参数),因此这样的URL不被视为REST式URL

因此,如果您打算构建一个基于REST的应用程序,您应该只使用干净的URL

编辑:

我从下面的评论中看到,您在理解什么是REST方面存在问题,因此我将尝试给出一个简单的示例:

  • 为了获取数据,您可能会使用
    http://example.com/foo/84
    作为get请求,其余FW知道获取id为84的资源foo
  • 为了发布关于foo的数据,您可以调用:
    http://example.com/foo/84
    作为POST请求,现在剩余的FW知道,由于它是POST请求,它将调用负责处理POST的方法,而不是处理get的方法
  • 要删除,您使用delete操作调用相同的URL,我认为您知道其余的内容

  • 因此,尽管您有相同的URL,但如果它是GET/POST/PUT/DELETE请求,这确实很重要http://example.com/foo/?value=84
    无效,但不完全正确。我的意思是,只要它是一个有效的URL,它就可以工作,并且您可以通过get或post获取参数

    另一方面,REST是一种体系结构,它的需求之一是一个干净的URL(不包括带“?”的参数),因此这样的URL不被视为REST式URL

    因此,如果您打算构建一个基于REST的应用程序,您应该只使用干净的URL

    编辑:

    我从下面的评论中看到,您在理解什么是REST方面存在问题,因此我将尝试给出一个简单的示例:

  • 为了获取数据,您可能会使用
    http://example.com/foo/84
    作为get请求,其余FW知道获取id为84的资源foo
  • 为了发布关于foo的数据,您可以调用:
    http://example.com/foo/84
    作为POST请求,现在剩余的FW知道,由于它是POST请求,它将调用负责处理POST的方法,而不是处理get的方法
  • 要删除,您使用delete操作调用相同的URL,我认为您知道其余的内容

  • 因此,尽管您有相同的URL,但如果是GET/POST/PUT/DELETE请求,这确实很重要。

    这里有第三个答案,与其他两个答案相矛盾

    RESTful URI几乎是一种矛盾修饰法。URI的语义与REST无关,对REST唯一重要的是一个URI只标识一个资源。除此之外,URI是一个原子标识符,其语义是无关的

    对于REST,指向Joe Doe用户资源的URI是否为:

    http://example.com/users/joedoe
    
    或:

    或:

    甚至:

    ftp://example.com/users/joedoe.json
    
    没关系!URI在RESTful应用程序中不需要有任何意义。人们花了很多时间为REST应用程序设计有意义的URI,同时他们应该关注自己的媒体类型。当您单击网页上的链接时,您不关心URI的语义,只关心标签。使用RESTAPI的客户端也会发生同样的情况。您的媒体类型的文档应该通过标签描述哪些链接可用以及它们的作用,您只需遵循这些链接即可


    如果您关心URI的语义,这表明您的客户机正在从文档中的某个模板构建URI,并且您没有使用HATEOAS,这意味着您根本没有使用REST。

    这里有第三个答案,与其他两个答案相矛盾

    RESTful URI几乎是一种矛盾修饰法。URI的语义与REST无关,对REST唯一重要的是一个URI只标识一个资源。除此之外,URI是一个原子标识符,其语义是无关的

    对于REST,指向Joe Doe用户资源的URI是否为:

    http://example.com/users/joedoe
    
    或:

    或:

    甚至:

    ftp://example.com/users/joedoe.json
    
    没关系!URI在RESTful应用程序中不需要有任何意义。人们花了很多时间为REST应用程序设计有意义的URI,同时他们应该关注自己的媒体类型。当您单击网页上的链接时,y