Post Delicious use是否会收到创建请求而不是发布请求,为什么不应该';我不也是吗?

Post Delicious use是否会收到创建请求而不是发布请求,为什么不应该';我不也是吗?,post,get,delicious-api,Post,Get,Delicious Api,我正在查看,下面是创建新书签的操作: https://api.del.icio.us/v1/posts/add?&url={URL}&description={description} 看起来他们正在使用GET请求来创建服务器端数据库条目,我在别处读到的内容不应该使用GET请求,而应该使用POST请求 我现在正在编写自己的API,我认为让用户直接从URL与API交互是非常棒的。但你不能这样做,除非你允许积垢操作超过了 那么,Delicious真的在做积垢手术吗?我不应该在我的A

我正在查看,下面是创建新书签的操作:

https://api.del.icio.us/v1/posts/add?&url={URL}&description={description}
看起来他们正在使用GET请求来创建服务器端数据库条目,我在别处读到的内容不应该使用GET请求,而应该使用POST请求

我现在正在编写自己的API,我认为让用户直接从URL与API交互是非常棒的。但你不能这样做,除非你允许积垢操作超过了


那么,Delicious真的在做积垢手术吗?我不应该在我的API中做同样的事情,或者只是为了防止意外调用而强制CRUD使用POST,这有什么重要原因吗?

这取决于您是否遵循REST原则,即禁止更改内容。因此,大多数人说REST使用POST进行更改

然而,GET和POST之间有区别。根据RFC,GET请求总是有后续响应。如果您使用POST,则需要遵循POST后重定向模式


另一个限制是URL的大小可能有限。因此,GET只有在输入数据足够短的情况下才能工作。因此,DeliciousAPI有一个bug。您将无法通过GET参数添加所有可能的url。

意外调用是其中的一部分;这就是HTTP规范在谈到“幂等”方法时的含义。但是你可以说Delicious所做的实际上是幂等的,只要URL只被添加一次,不管你添加了多少次。但更重要的是,GET是:


从界面设计的角度来看,您希望用户代理使POST、PUT和DELETE比GET更困难,或者至少明显不同,这样用户就可以依靠这种差异来提示他们的操作何时可能导致资源状态的更改,因为他们要对这些更改负责。使用GET进行更改,即使是幂等的,也会模糊这条责任线,尤其是在广泛部署时。

因此,我认为这意味着1)Delicious没有严格遵守HTTP中GET和POST的适当协议,但这与提交订单的事情没有多大关系,2)我应该构建API,使发布比获取更困难。
The important distinction here is that the user
did not request the side-effects, so therefore
cannot be held accountable for them.