小编Bra*_*rad的帖子

是否应该在RESTful Rails中删除404中不存在的资源?

在带有支架RESTful模型的全新Rails应用程序中,生成的删除代码如下所示:

class BeersController < ApplicationController
  # DELETE /beers/1
  # DELETE /beers/1.xml
  def destroy
    @beer = Beer.find(params[:id])
    @beer.destroy

    respond_to do |format|
      format.html { redirect_to(beers_url) }
      format.xml  { head :ok }
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

如果用户尝试删除相同的Beer两次(可能是快速双击,或者在两个不同的浏览器选项卡中执行操作),则会得到RecordNotFound错误,从而导致404页面.这是一个非常不友好的经历; 似乎最好将重定向完成,beers_url无论是否有flash错误,因为用户无法做任何关于第二次删除失败的事情.

另一种方法就是像删除一样成功,如下所示:

def destroy
  @beer = Beer.find_by_id(params[:id])
  destroyed = @beer.try(:destroy)        

  respond_to do |format|
    format.html { redirect_to(beers_url) }
    format.xml  { destroyed ? head(:ok) : head(:not_found) }
  end
end
Run Code Online (Sandbox Code Playgroud)

我可以理解API用例中出现硬404错误的愿望,但是我很难为Web应用程序辩护.任何人都可以提供一个很好的理由为什么我们应该以RESTfulness的名义向用户抛出一个可怕的错误?

(这个问题并不是Rails特有的,但我不知道其他框架如何处理这种情况).

ruby rest usability ruby-on-rails http

18
推荐指数
3
解决办法
7794
查看次数

我可以通过API看到Trello用户从"ghost"转换为"normal"吗?

作为入职流程的一部分,我们公司使用Trello API向我们的组织添加新用户.我们通过创建一个PUTto来添加用户/1/organizations/orgId/members,它返回新用户的JSON表示:

{
    "id": "521baf66783e22e12f000040",
    "confirmed": false,
    "fullName": "Bradley Buda",
    "memberType": "ghost",
    "username": "bradleybuda4",
    "email": "bradleybuda@example.com",
}
Run Code Online (Sandbox Code Playgroud)

(某些字段是匿名/删除的)

我们希望将此用户的ID存储在我们的系统中以用于簿记目的(因此我们可以在终止Bradley时删除该帐户).但是,当"ghost"用户实际加入组织时(通过单击邀请电子邮件中的链接),此用户记录将替换为全新的用户记录,具有不同的"id":

{
    "id": "521bb6b018c2a109450001d7",
    "confirmed": true,
    "fullName": "Bradley Buda",
    "memberType": "normal",
    "username": "bradleybuda4"
}
Run Code Online (Sandbox Code Playgroud)

GET /1/organizations/orgId/members电话地址也不会在通话中返回,因此我们不能将其用作主键.我们可以使用它"username"来跟踪我们的Trello用户,但如果用户使用现有的Trello帐户(而不是创建新帐户)接受邀请,那么用户名也将更改.

是否有任何持久的方法来跟踪API创建用户的邀请接受?现在,我们必须在接受邀请后手动跟踪Trello帐户,我们希望这个过程完全自动化.我也查看了GET /1/organizations/orgId/membershipsAPI,但是idMembership当ghost用户离开时,这些ID()似乎也会发生变化.据我所知,当鬼用户消失时,没有任何webhook会触发.

api identity trello

6
推荐指数
1
解决办法
202
查看次数

如何在Perl中创建Readonly DateTime和DateTime :: Duration

我有一个Perl脚本试图将一些配置DateTimeDateTime::Duration实例设置为Readonly常量.但是,当我们尝试对这些对象进行数学运算时,我会看到奇怪的行为Readonly.这是一个最小的例子:

#!/usr/bin/perl -w

use strict;
use warnings;

use DateTime;
use Readonly;

Readonly my $X => DateTime->now;
my $x = DateTime->now;

Readonly my $Y => DateTime::Duration->new( days => 3 );
my $y = DateTime::Duration->new( days => 3 );

my $a = $X - $Y;
my $b = $x - $y;

print "$a\n";
print "$b\n";
Run Code Online (Sandbox Code Playgroud)

在我的系统(OSX上的Perl 5.10.0)上显示:

$ ./datetime_test.pl 
Argument "2011-07-12T20:36:08" isn't numeric in subtraction (-) at ./datetime_test.pl line 15.
-4305941629
2011-07-09T20:36:08
Run Code Online (Sandbox Code Playgroud)

所以它看起来像制作DateTime …

perl datetime readonly

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

标签 统计

api ×1

datetime ×1

http ×1

identity ×1

perl ×1

readonly ×1

rest ×1

ruby ×1

ruby-on-rails ×1

trello ×1

usability ×1