2012-01-30 87 views
2

我试图创建一个REST服务,它显示/添加/删除/编辑数据库中的足球数据。 我已经做出了如何实现这一点的设计,但它变得相当复杂。这是RESTful吗?使用Tonic

例如,当一个目标得分时,我应该调用哪个URL?

所以问题是,我会朝着正确的方向走,还是你建议一些不同的方式?

enter image description here

回答

2
  • Abhiniav's answer同意除了对PUT不应该总是被用于编辑的事实。它只能用于当你是sending the new complete resource。如果您要发送修改或部分内容,请使用POST,或者不太知名的PATCH
  • 阅读Safe and Idempotent methods应该是有用的。
  • 您很可能会使用POST或PATCH来更新目标计数:/{country}/team/{team_id}/goals
  • 某些不是REST的最大原因是服务无法被发现。请阅读HATEOAS
+0

太好了,谢谢你的额外信息! – nhaarman 2012-01-31 00:10:01

+0

我不会推荐使用POST进行编辑,因为它不是幂等的,并且使用setter语义进行部分更新。使用PATCH是部分编辑的最佳建议(尽管不如PUT那么普遍)。 – mtsz 2012-01-31 01:10:53

+0

@mtsz协议中定义的POST不是幂等的,但这并不意味着您不能实现幂等性部分更改POST。我绝对同意你关于PATCH,这就是我提到它的原因。 – 2012-01-31 04:11:07

1

一切都在你的结构似乎罚款除了你应该开关接通和POST。 PUT可用于更新/创建记录。如果您事先知道资源ID,则可以使用PUT。

当您要创建ID不知道的新资源时会使用POST。

#1有一个非常详细的讨论在这里: PUT vs POST in REST

+0

这个例子(http://blog.bucket440.com/?p=209)实际上使用POST来更新,PUT来创建。 – nhaarman 2012-01-31 00:10:59

+0

没有看到。我通常回避基于PHP的REST框架。他们大多数有不正确的实现。 :) – Abhinav 2012-02-01 08:54:28