将表单POST与查询字符串组合是否有效?

Jez*_*Jez 25 post http query-string

我知道在大多数MVC框架中,例如,查询字符串参数和表单参数都可用于处理代码,并且通常合并为一组参数(通常使用POST优先).但是,根据HTTP规范进行是否有效?说你要发帖到:

http://1.2.3.4/MyApplication/Books?bookCode=1234
Run Code Online (Sandbox Code Playgroud)

...并提交一些更新,例如对图书名称为1234的图书名称进行更改,您希望处理代码将bookCode查询字符串参数考虑在内,并使用更新后的图书信息将POST表格参数更新.这是有效的,这是一个好主意吗?

ben*_*n75 21

根据HTTP规范有效吗?

是的.

以下是这些规范中定义的URL的一般语法

http_URL = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]]
Run Code Online (Sandbox Code Playgroud)

http_URL的形式没有其他限制.特别是,使用的http方法(即POST,GET,PUT,HEAD,...)不会对http URL格式添加任何限制.

使用GET方法时:服务器可以认为请求正文为空.

使用POST方法时:服务器必须处理请求正文.

这是个好主意吗 ?

这取决于你需要做什么.我建议你这个链接解释GET和POST背后的想法.

我可以认为在某些情况下总是有一些参数,如url 的查询部分中的用户语言,这样很方便.

  • 没有"相关部分",因为规范没有解决这个特定问题,即规范没有具体说明允许查询字符串.相反,答案是合理推断的,恰恰是这里给出的线条,即POST语义的规范没有任何说明,表明不允许查询字符串. (4认同)
  • 实际上,POST URI中的查询字符串是完全合法的.尽管如此,如果你在RFC中同时提供查询字符串和`Content-Type:application/x-www-form-urlencoded`正文,那么从粗略的看来我找不到任何关于优先级的内容.我唯一能找到的是在[Go's net/http](https://golang.org/pkg/net/http/#Request.ParseForm)中最好描述的一种合理但惯用的实现定义行为:*"请求正文参数优先于r.Form中的URL查询字符串值"*. (3认同)
  • 在这种情况下,仅仅链接到完整的 RFC 几乎没有帮助。你能在这里引用相关部分吗? (2认同)