【发布时间】:2012-05-02 01:32:19
【问题描述】:
我正在使用 Twitter API 并注意到一些有趣的事情 - 对于更新,它们需要 POST 方法,但需要查询字符串中的参数。 (例如,请参阅他们的开发者控制台 here 中的状态/更新调用。)
显然这在技术上是可行的,但为什么会有人这样做呢? POST 参数不属于正文吗?
【问题讨论】:
标签: http rest twitter http-post
我正在使用 Twitter API 并注意到一些有趣的事情 - 对于更新,它们需要 POST 方法,但需要查询字符串中的参数。 (例如,请参阅他们的开发者控制台 here 中的状态/更新调用。)
显然这在技术上是可行的,但为什么会有人这样做呢? POST 参数不属于正文吗?
【问题讨论】:
标签: http rest twitter http-post
任何一个选项都同样有效。我最喜欢在 POST 的 URL 中使用参数的示例是在地图上设置航点的应用程序。例如
POST /map/route/45/waypoints?lat=35&long=74
在这种情况下,参数在 URI 中作为位置标识符更有意义,而不仅仅是在正文中传递给通用资源的参数。
【讨论】:
在 REST 架构中,GET 和 POST 只是动词,它们指示检索或创建/更新资源。 URI 定义了资源的标识。
例子:
POST /student?name=Tom&age=12 >> It will create a new student with name Tom and age 12.
POST /student/10?name=Tom&age=12 >> It will update student with id 20 with name Tom and age 12.
没有规定数据应绑定到正文负载或 URI。这与在 POST 中发送 HTML 表单数据的 WEB 1.0 概念不同。
【讨论】:
PUT 而不是POST
WEB API 的参数是否在正文或查询中取决于您在 POST 中发送的 Content-Type 标头。
如果是Content-Type: application/json; charset=UTF-8 则参数在正文中应为 json。如果是Content-Type:application/x-www-form-urlencoded; charset=UTF-8 那么参数应该在查询字符串中
【讨论】: