美味的用途是否获得创建请求而不是帖子,为什么我不应该这样做?

StackOverflow https://stackoverflow.com/questions/8802795

  •  25-10-2019
  •  | 
  •  

我在看 美味的API 并查看以下是创建新书签的操作:

https://api.del.icio.us/v1/posts/add?&url={URL}&description={description}

看来他们正在使用一个GET请求来创建服务器端数据库条目,我在其他地方不应该使用get请求来完成此内容,而仅在POST请求中使用。

我现在正在编写自己的API,我认为直接从URL与API交互是很棒的。但是,除非您允许Crud操作进行,否则您将无法做到这一点。

那么,美味的真的是在进行CRUD操作吗?我是否应该在API中做同样的事情,或者刚刚要求CRUD防止意外调用的重要原因?

有帮助吗?

解决方案

意外调用是其中的一部分;这就是HTTP规格在谈论“ iDempotent”方法时的含义。但是,您可以说,只要只有一旦添加了多少次,就可以做什么,只要URL才能添加多少次。但更重要的是,那是 安全的:

The important distinction here is that the user
did not request the side-effects, so therefore
cannot be held accountable for them.

从接口设计的角度来看,您 用户代理使帖子和放置和删除和删除比获得或至少完全不同的难度,因此用户可以依靠该差异来提示,因为他们的操作可能会导致资源状态发生变化,因为他们 负责这些变化。使用Get进行更改,即使愿意的话也模糊了那条问责制,尤其是在 预摘要 被广泛部署。

其他提示

这取决于您是否遵循其余的原则来改变事物。因此,大多数人都说休息帖子进行更改。

但是,获得和邮寄之间存在区别。根据RFC,GET请求始终具有后续响应。而且,如果您使用帖子,则需要遵循重定向序列图案。

另一个限制是URL的大小可能有限。因此,只要您的输入数据足够短,获得就可以工作。因此,美味的API有一个错误。您将无法通过GET参数添加所有可能的URL。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top