访问修改服务器数据但不是CRUD操作的控制器操作的标准方法是什么?

时间:2016-11-28 15:34:12

标签: ruby-on-rails ruby rest asp.net-web-api

我有一个Ruby on Rails API。其中一个ActionRecord模型是一个事务。我希望能够使用http://localhost:3000/transactions/1/fulfill之类的链接,其中1是数据库中事务的id。

  

据我了解,应该避免GET请求,因为服务器上的数据是通过操作修改的。我会使用POST请求或PUT请求吗?如果请求正文在通话中为空,可以吗?

2 个答案:

答案 0 :(得分:1)

要获得RESTful API,您必须将所有内容都压缩到CRUD范例中。这是REST的一个众所周知的缺点。非CRUD操作通常伪装成资源创建或资源更新,尽管它是违反直觉的。在您的情况下,操作会更新银行帐户和交易。 REST没有一次更新两个资源的特定方法,因此您必须选择以下不完美的解决方案之一:

  1. 将您的操作视为事务更新(PUT或PATCH)
  2. 将您的操作视为银行帐户(PUT或PATCH)的更新
  3. 将您的操作视为创建履行资源(POST)
  4. 如果是POST,则允许空体。在PUT的情况下,正文表示整个资源的新版本。在PATCH的情况下,正文表示资源的更新部分。

答案 1 :(得分:0)

id使用帖子。因为您正在创建交易履行。没有空身。