有人可以用REST方式向我解释Twitter的设计决策,这两个调用中的参数位置是什么?似乎:id位置是不一致和任意的(尽管这显然是故意的)。
GET statuses/:id/retweeted_by
Show user objects of up to 100 members who retweeted the status.
GET statuses/retweets/:id
Returns up to 100 of the first retweets of a given tweet.
在他们的API(https://dev.twitter.com/docs/api)中还有其他类似的例子,所以我肯定错过了一些东西。
谢谢!
答案 0 :(得分:0)
只是在这里猜测
Twitter上有人曾指出Twitter API在几个servlet上运行。我只能假设这是相关的 - 映射/retweets/*
比映射每个组合更容易。
更新:我认为API本身的历史也可能是相关的。 Twitter的API在过去几年中并没有真正发生太大变化,如果确实发生了变化,那将是因为会增加新的功能。像GET statuses/show/:id
这样的端点旧,而GET statuses/retweets/:id
更新。如果Twitter在某个时候决定改变命名约定,那么它们不能只重命名旧的,因为它会破坏应用程序。
我的另一个理论是GET statuses/retweets/:id
实际上并不是指Tweet :id
本身,而是基于它的推文。通过返回用户而不是其他状态,GET statuses/:id/retweeted_by
与推文本身直接相关。
我也经常对命名一致性感到困惑。我相信他们有理由。
答案 1 :(得分:0)
我最终在Twitter上与朋友核实,他说:
“我刚刚与最初编写这两个API的人交谈过 终点,他不记得为什么。要回答你的问题, 但是,这种设计可能没有很好的REST原因。“