2016-01-13 90 views
4

我正在学习接口设计。API接口设计 - 切换或2个不同的接口

这是我很好奇的。

  • 一些开放的API支持2个不同的接口来实现切换。即instagram like接口。它分离一样的界面(如,取消等)
  • 什么是独立的这两个优势。(分离成两个接口,使最终用户更加复杂在我看来)

我怀疑这一点,因为它可能通过切换来实现。

即用户发送item_id和user_id。服务器检查数据库(这个项目已经被喜欢或不喜欢),并更新。

感谢您的回答!

回答

1

有两个接口切换的真正好处是它不需要用户知道他们试图改变的事物的当前状态(即它不需要我首先查询状态) 。

如果我是API的消费者,通常我会执行诸如like之类的操作。我很少能想到一个我想要执行do the opposite of what I did previously(除非我感觉像翻转屏幕一样)动作的情况。如果您没有likeunlike的两个端点,那么您首先必须轮询API以获取当前状态,然后根据需要执行您正在讨论的切换。

这种情况会在代码中引入更多逻辑,要求您对API进行1-2次调用,并假定状态在调用之间没有变化;而拥有两个端点则会减少逻辑,将您的API调用限制为每个操作1个,并且您不必担心状态意外更改。

如果您尝试like某些用户已有like d的情况,那么API将简单地返回成功的结果并且不会更改基础数据。

+0

感谢您的回答。这是非常有说服力的。但是,我仍然有一个问题。我会适用于具体情况,喜欢和取消。作为一个终端用户,如果它使用单独的API,我必须每次检查视图的状态。另一方面,如果它使用一个切换API,我会调用相同的API而不检查 - 也许检查当前状态不是为最终用户。 (我的前提下,像API的关键是USER_ID和media_id)由于这个API与特定用户捆绑,我觉得我不关心状态变化。对于类似'like'这样的操作,我仍然没有获得独立API的优势。谢谢 –

+0

我不完全确定你的意思是“每次检查视图的状态”。您不必这样做,因为即使该项目已经是'like'd,API也会接受您的'like'动作。它会默默地不改变价值。我已经更新了我的回答以澄清。 – Suever

+0

我的图像存储Instagram的数据库(因为管理员用户要筛选一些散列标签的结果)。然后,一个门户用户来到网站,并希望做“像”行动。所以他按下按钮(这个按钮是设计切换文字在'like'和'cancel'之间切换)。在这种情况下,开发人员必须检查当前的按钮文本并调用instagram API,因为“like”和“cancel like”是不同的。 //这是我在“每次查看视图状态”时的意思。不过,我明白了你的观点 –

0

偏好一个接口的一个原因是,它将是幂等的。也就是说,即使请求被多次执行,结果状态也是一样的。

这是一个相当人为的例子,但如果两个不同的人共享同一帐户试图喜欢一个足够小的窗口中同样的事情,你可以用它作为联合国喜欢,而不是结束。