小编Chr*_*ley的帖子

REST DELETE真的是幂等的吗?

DELETE应该是幂等的.

如果我删除http://example.com/account/123,它将删除该帐户.

如果我再次这样做,我会期待404,因为该帐户不再存在?如果我尝试删除从未存在过的帐户怎么办?

rest http http-headers

153
推荐指数
7
解决办法
3万
查看次数

REST,HTTP DELETE和参数

是否有任何关于为HTTP DELETE请求提供参数的非RESTful?


我的情况是我正在建模"您确定要删除它吗?" 场景.在某些情况下,资源的状态表明请求的删除可能无效.你可以想象一些自己需要确认删除的场景

我们采用的解决方案是将参数传递给删除请求以指示可以继续删除("?force_delete = true")

例如

DELETE http://server/resource/id?force_delete=true
Run Code Online (Sandbox Code Playgroud)

我相信它仍然是宁静的:

(a)DELETE的语义没有被改变 - 用户仍然可以发送正常的DELETE请求,但这可能会失败,409响应的主体将解释原因.我说可能会失败,因为(出于不值得解释的原因)在某些情况下没有理由提示用户.

(b)Roy的论文中没有任何内容表明它违背了REST的精神 - 为什么会有,因为HTTP只是REST的一个实现,所以为什么传递HTTP参数很重要


有人能指出一个明确的陈述,指出为什么这不是RESTful?

在一个相关的问题上,如果用户没有指定force_delete然后我正在返回409 Conflict- 这是最合适的响应代码吗?


跟进

经过一些进一步的研究,我认为向DELETE添加参数可能违反了几个原则.

首先,实施可能违反了"统一界面"(参见Roy的论文第5.1.5节)

通过添加'force_delete',我们在已经很好定义的DELETE方法上添加了一个额外的约束.这种约束只对我们有意义.

您还可能认为它违反了"5.1.2客户端 - 服务器",因为确认对话确实是UI问题,并且并非所有客户端都希望确认删除.

有人建议吗?

rest http

126
推荐指数
4
解决办法
11万
查看次数

Ruby的ISO-8601日期解析是否有完整的实现?

Time.iso8601方法是ISO-8601的受限子集.

  • 有什么限制?
  • 有谁知道Ruby的完整实现?我正在使用MRI 1.8.7.

更新

看起来没有一个类可以处理所有各种8601日期和日期/时间组合.但是,我设法通过使用Date.parseTime.iso8601方法解决问题.缺点是你需要在代码中决定输入是看起来像日期还是日期/时间.

警告:时区差异

Time.iso8601并且Time.parse行为不同.

>> Time.parse("2010-09-06T12:27:00.10-05:00")
=> Mon Sep 06 18:27:00 +0100 2010

>> Time.iso8601("2010-09-06T12:27:00.10-05:00")
=> Mon Sep 06 17:27:00 UTC 2010
Run Code Online (Sandbox Code Playgroud)

Time.iso8601和ISO-8601之间的差异

本文档涉及ISO-8601中的内容与Ruby支持的内容之间的差异.简短的回答是可能的格式数量受到限制.

ruby datetime iso8601

21
推荐指数
2
解决办法
1万
查看次数

Ruby:获取本地IP(nix)

我需要获取我的IP(即DHCP).我用我的environment.rb:

LOCAL_IP = `ifconfig wlan0`.match(/inet addr:(\d*\.\d*\.\d*\.\d*)/)[1] || "localhost"
Run Code Online (Sandbox Code Playgroud)

但有没有rubyway或更清洁的解决方案?

ruby unix ip

14
推荐指数
3
解决办法
1万
查看次数

在REST JSON结果中包含has_many结果

我有一个模型叫List那个has_many :entries.像往常一样,Rails 3生成了这个show方法List

def show
    @list = List.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @list }
    end
end
Run Code Online (Sandbox Code Playgroud)

如何更改format.json以包含json响应中的entries结果@list

我知道我可以转换@list为哈希,将哈希值添加到哈希值.entries,然后渲染哈希,但我怀疑Rails有更优雅的技巧.

json ruby-on-rails ruby-on-rails-3

12
推荐指数
1
解决办法
6167
查看次数

如何使--no-ri --no-rdoc成为gem install的默认设置?

可能重复:
如何使--no-ri --no-rdoc为gem install的默认值?

我从不使用ri和rdoc,安装时间太长.是否有一个配置文件可以让我这样做

ruby gem

11
推荐指数
3
解决办法
2284
查看次数

使用Ruby从OSX获取我的进程的内存使用情况

我有一个Ruby应用程序(在Linux上)使用/ proc文件系统来获取有关其内存使用情况的信息.有谁知道如何为Mac OSX获取相同的信息?task_info系统调用看起来很有前景,但是有没有相同的Ruby可用?

要清楚,我正在寻找一个系统调用,我不想为此启动一个过程(抱歉Lars!).

ruby macos

11
推荐指数
2
解决办法
4551
查看次数

RabbitMq是否从交换机到队列进行循环

我目前正在评估消息队列系统,RabbitMq似乎是一个很好的候选者,所以我正在深入研究它.

为了给出一些上下文,我希望有一个类似于一个交换负载的东西来平衡消息发布到多个队列.我不想复制邮件,因此不能选择扇出交换.

另外我之所以考虑拥有多个队列而不是一个队列来处理与消费者的循环,我不希望我们的单点故障处于队列级别.

听起来我可以在发布者端添加一些逻辑来通过编辑路由键并具有适当的绑定来模拟该行为.但这种被动方法不会考虑每个队列上的消息消耗速度,如果该队列的消费者应用程序已经死亡,可能会导致填满一个队列.

我正在寻找一种来自交换实体方面的更主动的方式,它将根据每个队列大小或某种性质决定在何处发送下一条消息.

我读到了Alice和可用的RESTful API,但这似乎是实现快速路由决策的重要解决方案.

任何人都知道如果在交换队列之间循环是否可行,那么RabbitMQ呢?谢谢.

messaging message-queue rabbitmq

10
推荐指数
1
解决办法
2596
查看次数

我没有为宝石安装ri和rdoc而遗漏了什么?

我从未见过为gems安装ri和rdoc的意义,我的.gemrc文件设置了--no-ri和--no-rdoc.由于每个宝石都包含ri和rdoc信息,我只是想知道我是否遗漏了什么?为宝石安装ri和rdoc有什么好处吗?

谢谢

克里斯

摘要

如果你没有安装ri和rdoc,你就不会失去任何有价值的东西.我想也许它已经在一些IDE(我是一个Emacs用户)中使用过,但似乎并非如此.

ruby rubygems

7
推荐指数
1
解决办法
1731
查看次数

如何在没有javascript的情况下从表单中修补或删除

我正在凤凰城写一个简单的crud应用程序.如何在不使用javascript的情况下从表单提交PATCH和DELETE请求?

phoenix-framework

7
推荐指数
1
解决办法
1698
查看次数