2016-04-29 97 views
0

我正在设计一个宁静的API。在这个API中,可以使用API​​进行POST,DELETE和GET情况。如果有一个情况你觉得特别重要,那么可以对它进行“投票”,以便案件变得更加优先。REST API中的“投票”资源应该使用哪种方法?

但是我想知道这应该是什么类型的方法?

哪一个应该是:

GET /cases/{case_id}/vote 
POST /cases/{case_id}/vote 
PUT /cases/{case_id}/vote 

调用投票方法将只通过1 增加的票数我目前倾向于把自己看到,因为它是如何在现有数量的更新(尽管POST也可以用于此),但我想知道该公约是什么。

+0

http://stackoverflow.com/questions/630453/put-vs-post-in-rest 这个话题似乎有一个好主意,应该使用什么,但没有给我一个明确的答案在我的情况。 – Terabyte

回答

1

首先,我会说出资源

/cases/{case_id}/votes 

这清楚地表明,这是本案的票资源。

然后在这个资源使用

POST /cases/{case_id}/votes 

。在服务器上,票数将增加1。

请勿使用PUT,因为这意味着客户端控制的总票数不正确。客户端只会触发增加一个,它不会设置总票数。

+0

作为投票,这是不够的,因为我目前的建议不承认来自同一个客户/用户的多票,因此使投票以某种方式无用。无论是需要将用户/客户端添加到URI /资源还是其他一些技术,以允许每个用户/客户端只需添加一个投票 –

+0

是的,服务器将负责识别来自同一用户的重复投票。但这不是一个API问题。 – 2016-04-29 07:46:23

+0

让服务器跟踪每个用户/客户端的一票约束,实际上是将服务器的状态外部化。作为一个穷人的方法,服务器可以锁定IP地址,防止进一步调用相应客户端的URI。如果服务器是镜像的,或者在不跟踪IP2Host连接的负载平衡器后面,则来自同一客户端的进一步请求可能由第二个服务器处理,因此仍算作第二票。当然,还有更好的技术,尽管将服务器状态外化并不总是最好的选择 –

相关问题