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

时间:2013-02-05 14:39:36

标签: http post query-string

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

http://1.2.3.4/MyApplication/Books?bookCode=1234

...并提交一些更新,例如更改为图书名称为1234的图书名称,您希望处理代码同时考虑bookCode查询字符串参数和POSTed表单具有更新的书籍信息的参数。这是有效的,这是一个好主意吗?

2 个答案:

答案 0 :(得分:18)

  

根据HTTP规范有效吗?

Yes

以下是一般syntax of URL as defined in those specs

http_URL = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]]

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

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

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

  

这是个好主意吗?

这取决于你需要做什么。我建议你link解释GET和POST背后的想法。

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

答案 1 :(得分:1)

我知道在大多数MVC框架中,例如,查询字符串参数和表单参数都将可用于处理代码,并且通常合并为一组参数(通常优先使用POST)。 / em>

任何有能力的框架都应该支持这一点。

这是否有效

是。 HTTP中的POST方法不对所使用的URI施加任何限制。

这是一个好主意吗?

显然不是,如果你要使用的框架仍然是线索挑战。否则,这取决于你想要完成什么。主要用例(将数据子集重定向到新的POST目标)已经irretrievably bollixed by browser implementations(所有这些都机械地跟随Mosaic / Netscape的主导),因此这里的考虑主要是理论上的。