我正在使用Twitter API并注意到一些有趣的东西 - 对于更新,它们需要POST方法,但期望查询字符串中的参数。 (例如,参见开发人员控制台here中的状态/更新调用。)
显然这在技术上是可行的,但为什么有人这样做呢? POST参数是否属于正文?
答案 0 :(得分:12)
任何一个选项都同样有效。我最喜欢在POST的URL中使用参数的示例是在地图上设置航点的应用程序。 e.g。
POST /map/route/45/waypoints?lat=35&long=74
在这种情况下,参数在URI中作为位置的标识符更有意义,而不仅仅是在正文中传递给通用资源的参数。
答案 1 :(得分:6)
在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概念不同。
答案 2 :(得分:-2)
如果WEB API的参数在主体或查询中,则取决于您在POST中发送的Content-Type标头。
如果它是forinstance是Content-Type:application / json; charset = UTF-8然后参数在身体中被期望为json。如果是Content-Type:application / x-www-form-urlencoded; charset = UTF-8然后在查询字符串中预期参数