允许在POST中为URL指定参数是不好的做法

时间:2014-09-22 15:11:56

标签: rest url post

是否允许将POST请求的参数(正在创建的资源的元素)添加到URL以及正文中?

例如,假设我有一个POST来创建新用户

/user

在请求正文中使用完整的参数集nameemail等。

但是,我已经看到很多API会接受body或URL参数中的值,如下所示:

/user?name=foo&email=foo@bar.com

第二个选项是否有任何原因,允许URL中的参数是不好的做法?它是否违反了REST的任何组件?

2 个答案:

答案 0 :(得分:1)

查询参数的目的是帮助识别请求的目标资源。 POST的主体应该用于指定服务器的指令。

  

查询组件包含非分层数据,以及
  路径组件(第3.3节)中的数据用于识别
  URI的方案和命名权限范围内的资源   (如果有的话)    - RFC 3986 Section 3.4

     

分层路径组件和可选查询组件服务   作为该来源内潜在目标资源的标识符   服务器的名称空间    - RFC 7230 Section 2.7.1

答案 1 :(得分:0)

Udacity Web Development课程是Steve Huffman(Reddit背后的人),建议仅使用POST请求来更新服务器端数据。史蒂夫强调了为什么使用GET参数可能会有问题。