小编Del*_*lmo的帖子

在HTTP 202中使用Location头是否符合RFC标准?

我与我的同事讨论了在202 Accepted响应中使用Location头的一个很好的概念.

故事从这里开始分析PHP header()函数的行为.有趣的摘录:

第二个特例是"Location:"标题.它不仅这个头发送回浏览器,但是除非201或3xx状态代码已经被设置也返回重定向(302)状态代码到浏览器.

它们未在此默认行为中包含202状态代码.看起来他们并不期望202响应有一个位置,事实上:

header("HTTP/1.1 202");
header("Location: http://example.com");
Run Code Online (Sandbox Code Playgroud)

将客户端重定向到位置URL.当然,也可以改变与header()函数的第三个参数,但一下就吸引了我的注意力被这种行为:为什么他们了解,默认202预计不会举行Location头?

然后我查看RFC,寻找202状态的官方含义.有趣的摘录:

返回此响应的实体应该包括请求的当前状态的指示,以及指向状态监视器的指针或用户可以期望满足请求的某些估计.

它没有明确地引用位置标头,就像之前(在相同的RFC文档中)201响应一样.这可能是PHP人员理解202响应不应该保持Location头的原因.指针会被解释为Location头还是PHP家伙做出了错误的假设?如果标准允许Location头有202响应:不应该像201响应定义更明确的官方文档?

最后,我回顾了最新的RFC版本,并发现编辑方面的一些变化:

与此响应发送表示应该描述请求的当前状态和(或嵌入)点状态监视器,一个当所述请求将被兑现的估计提供给用户.

同样,没有明确的假设指向 Location头.

简而言之,经过上述修订后:我是否使用带有202响应的Location标头符合RFC?

http rfc http-status-codes http-headers

19
推荐指数
3
解决办法
4344
查看次数

有没有办法在使用Twilio拨打电话时传递自定义参数?

我正在使用Twilio PHP库但问题实际上与语言无关.我尝试做类似以下的事情:

$client = new Services_Twilio('MyAccountSID', 'My auth token');
$client->account->calls->create($from_number, $to_number, $url_or_AppSID, array(
    'TwilioParam1' => 'value1',
    'TwilioParam2' => 'value2',
    'MyCustomParameter1' => 'CustomValue1',
    'MyCustomParamete2' => 'CustomValue2'
));
Run Code Online (Sandbox Code Playgroud)

然后我希望在Twilio请求我的$ url_or_AppSID(我的TwiML应用程序)时收到这些参数,但它没有发生.我知道可能的方法是在查询字符串中添加这些参数并在$ url_or_AppSID参数中传递我的自定义URL,但这迫使我设置GET方法,我想通过POST请求传递我的自定义参数,而不是GET .也许我必须使用已经通过POST注册的请求URL的AppSID.

有没有办法使用POST方法传递自定义参数?

twilio twilio-php

5
推荐指数
1
解决办法
6473
查看次数

调用TObjectList.Clear时,不会释放TObjectList中的对象

请参阅下面的代码.为了简单起见,我删除了很多代码,但剩下的代码仍然很长,对不起:(

  IObserver = interface
    ['{1DD212F8-BD5E-47BF-9A3B-39EF7B9D99B5}']
    procedure Update(Observable: IObservable);
  end;

  TObserver = class abstract (TSingletonImplementation, IObserver)
    strict protected
      //...
    public
      constructor Create;
      destructor Destroy; virtual;
      //IObserver
      procedure Update(Observable: IObservable); virtual; abstract;
      //... 
  end;

  TShapeModification = class abstract (TObserver)
    strict protected
      //...
    public
      //Doesn't have a constructor
  end;

  TRangePointModification = class(TShapeModification)
    strict private
      //...
    public
      constructor Create(...);
      //...
  end;

  constructor TRangePointModification.Create(...);
  begin
    inherited Create;
    //...
  end;
Run Code Online (Sandbox Code Playgroud)

然后在某个时候:

TClientClass = class
  strict private
    fList: TObjectList<TShapeModification>;
  public
    constructor Create();
    destructor Destroy(); override;
    procedure Add(ShapeModification: …
Run Code Online (Sandbox Code Playgroud)

delphi

5
推荐指数
1
解决办法
150
查看次数

更新行时是否总是触发生成列的计算?

我在 MySQL 5.7 中有一个包含几十列的表。其中之一是生成列(存储的,而不是虚拟的),它使用一个大表达式来计算基于列 A、B 和 C 的值,所以我猜当插入新行时,MySQL 需要一点额外的时间来计算值或更新。

我的简单问题是:

当我更新一行上的其他列(F、G 等)时,是否也会触发计算?

您能给我发送一些参考资料(链接)来证明您的答案吗?

谢谢

编辑:

我已经阅读了@Barmar建议的MySQL官方文档:

存储:插入或更新行时计算并存储列值。

正如你所看到的,它说插入或更新,但我猜更新实际上意味着:如果相关列被更新,因为我认为MySQL足够聪明,如果这些列没有更新,则不会执行计算。这实际上是我想证实的假设。

mysql calculated-columns

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

知道某个集合的排序规则的命令是什么?

我在MongoDB 3.4中显式创建了一个集合,以定义排序规则:

db.createCollection("mycoll", {collation: {
  "locale": "en_US", 
  "strength": 1, 
  "caseLevel": false, 
  "numericOrdering": false, 
  "maxVariable": "punct", 
  "caseFirst": "off", 
  "alternate": "non-ignorable", 
  "normalization": false, 
  "backwards": false
}})
Run Code Online (Sandbox Code Playgroud)

现在,我想检查与该集合关联的排序规则,但是找不到用于显示该信息的命令。我测试了以下命令,但没有运气

db.mycoll.stats()
db.runCommand({collStats: "mycoll"})
Run Code Online (Sandbox Code Playgroud)

那么,要知道某个集合的归类的命令是什么?

编辑:分析上面我collator=在wiredTiger存储引擎下找到的命令的输出,所以我想知道它是否应该出现排序规则,但为什么它为空?

编辑:检查完所有输出后,db.runCommand({collStats: "mycoll"})我在_id index 内的indexDetails部分下找到了排序规则,但这是索引排序规则,而不是集合排序规则。考虑到如果使用autoIndexId = false创建了集合,那么将缺少indexDetails:在任何情况下如何知道某些集合的排序规则?

mongodb

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

使用异常机制而不是"if"来处理Delphi中的默认对象参数

请查看以下代码摘录:

TCustomPoint = class
  private
    //many other fields
    mPoint: TPoint;
  public
    //many other stuff: constructor, destructor, methods, etc.
    function ToPoint(Axis: TAxis = nil);  
end;
Run Code Online (Sandbox Code Playgroud)

ToPoint实现中,我希望在传递Axis对象时执行某些操作,如果不是,则执行其他操作.所以明显的实现是:

function TCustomPoint.ToPoint(Axis: TAxis = nil): TPoint;
begin
  if Assigned(Axis) then
    Result:=Axis.Reallocate(Self.mPoint);
  else
    Result:=Self.mPoint;
end;
Run Code Online (Sandbox Code Playgroud)

但是这个方法将在成千上万的TCustomPoint对象中被调用,有时会传递Axis,所以我想知道我是否会使用异常机制而不是提高性能if.像这样的东西:

function TCustomPoint.ToPoint(Axis: TAxis = nil): TPoint;
begin
  try
    Result:=Axis.Reallocate(Self.mPoint);
  except on
    E: EAccessViolation do Result:=Self.mPoint;
end;
Run Code Online (Sandbox Code Playgroud)

看看我只是捕获一个EAccessViolation异常,所以如果有任何其他类型的异常,它将不会被我管理,所以它将按预期引发.在此示例中,EAccessViolation发生异常的唯一方法是访问空Axis对象.那是对的吗?第二个实现真的有所改进吗?有没有缺点?

delphi

-2
推荐指数
1
解决办法
87
查看次数