ruby-on-rails - RESTful API 最佳实践,更新与自定义操作

标签 ruby-on-rails api rest

<分区>

我正在实现一个 RESTfull API 来与 AWS RDS 对话,security_groups 资源支持典型的 CRUD 动词。当谈到“授权”和“撤销”时,我不确定最佳做法是什么,您认为哪一个最好?

自定义 Action ,url中的参数

PUT agifog:3000/rds/security_groups/:security_group/authorize?ec2name='default'&ec2owner='0123456789'

自定义 Action ,传递参数

PUT agifog:3000/rds/security_groups/:security_group/authorize
{
    "ec2name": "default"
    "ec2owner": "0123456789"
}

标准更新

PUT agifog:3000/rds/security_groups/:security_group
{
    "operation": "authorize"
    "ec2name": "default"
    "ec2owner": "0123456789"
}

最佳答案

PUT 并不意味着“更新”,就像 POST 意味着“插入”一样。 PUT 的意思是“把这个放在这里”。

RESTful 实践围绕着将您的 URL 视为资源、在您的域中具有某种意义的实体,您可以对其执行操作(HTTP 请求的动词)。

您可以做的是将安全组视为您正在执行操作的资源,并将用户PUT 到该组或从该组DELETE 他们:

PUT agifog:3000/rds/security_groups/:security_group/default
{
    "ec2owner": "0123456789"
}

DELETE agifog:3000/rds/security_groups/:security_group/default

然后这些可以对应于授权和撤销操作,并且可以很容易地看到组上的 GET 如何生成组中当前所有用户的列表。

关于ruby-on-rails - RESTful API 最佳实践,更新与自定义操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8669498/

相关文章:

ruby-on-rails - 如何摆脱 OpenSSL::SSL::SSLError

ruby-on-rails - 如何从 liquid 标签访问 Rails Controller ?

ruby-on-rails - 如何检查 HTTParty 生成的完整 URL?

ruby-on-rails - 验证器 before_update(ing) 一个模型

javascript - 字典对象的 Vue + Vuex react 性

android - OLA API 集成给出错误作为无效的合作伙伴 key

javascript - Google map 未出现(未加载)

api - Flickr API : API key keeps getting invalid?

api - 获取Unity WWW响应状态码

gwt - 如何从 Google Web Toolkit 进行 REST 调用?