Php Vimeo API未响应;如果修改自";标题

Php Vimeo API未响应;如果修改自";标题,php,vimeo-api,if-modified-since,Php,Vimeo Api,If Modified Since,根据: If Modified Since标题允许您仅返回自特定日期和时间以来已修改的API资源 标题如下所示: 如果修改自:{ddd}、{D}{MMM}{YYYY}{HH}:{mm}:{ss}{Z} 注意:如果您的格式代码生锈,例如2023年6月20日星期二14:42:36 GMT 如果自该日期以来没有修改任何资源,则API将返回一个空的响应正文和HTTP状态304 Not modified 我正在使用。 根据,PHP库的request()方法接受一个标题数组。并显示如何传递和解析$head

根据:

If Modified Since标题允许您仅返回自特定日期和时间以来已修改的API资源

标题如下所示:
如果修改自:{ddd}、{D}{MMM}{YYYY}{HH}:{mm}:{ss}{Z}
注意:如果您的格式代码生锈,例如2023年6月20日星期二14:42:36 GMT

如果自该日期以来没有修改任何资源,则API将返回一个空的响应正文和HTTP状态304 Not modified


我正在使用。
根据,PHP库的
request()
方法接受一个标题数组。并显示如何传递和解析
$headers
数组:

public函数请求($url,$params=array(),$method='GET',
$json_body=true,数组$headers=array()
//设置标题
foreach($key=>$value的标题){
$curl\u opts[CURLOPT\u HTTPHEADER][]=sprintf('%s:%s',$key,$value);
}

但当我传递示例中显示的未来日期时,我仍然会收到完整的视频列表,而不是文档中指定的“空响应正文和HTTP状态304未修改”

我做错了什么

$fields=数组(
“创建时间”,
“修改时间”
);
$params=数组(
“页面”=>$page,
'过滤器'=>'可嵌入',
“filter_Embeddeble'=>true,
'fields'=>内爆(',',$fields)
);
$headers=数组(
'如果自'=>'星期二,2023年6月20日14:42:36 GMT'起修改'
);
$json_body=true;
$method='GET';
$response=$vimeo->request('/me/videos',$params,$method,$json_body,$headers);
结果:

数组
(
[0]=>阵列
(
[创建时间]=>2018-06-05T19:27:18+00:00
[修改时间]=>2018-06-29T19:12:21+00:00
)
[1] =>阵列
(
[创建时间]=>2016-06-02T03:01:40+00:00
[修改时间]=>2019-04-30T06:15:29+00:00
)
[2] =>阵列
(
[创建时间]=>2016-05-29T05:31:46+00:00
[修改时间]=>2019-04-25T07:46:53+00:00
)
....

编辑 基于(不是关于Vimeo),如果其中一个视频在“if modified Since”日期之后被修改,API似乎可能会返回整个视频集

如果整个响应中有任何更改,那么它将向您发送整个响应

但如果日期是在未来,我仍然希望结果是空的。我误解了吗


编辑 Tom建议Vimeo API忽略将来设置的“If Modified Since”标题。我在最近尝试设置了我的标题,但仍然得到在该日期之前修改的结果:

$vimeo = new \Vimeo\Vimeo(false,false,$access_token);

$fields = array(
    'modified_time'
);

$params = array(
    'page' => 1,
    'fields' => implode(',',$fields)
);

$method = 'GET';
$json_body = true;

$headers = array(
    'If-Modified-Since' => 'Fri, 24 May 2019 14:42:36 GMT'
);

$response = $vimeo->request('/me/videos', $params, $method, $json_body, $headers);

echo"<pre>".print_r($response,true)."</pre>";

编辑
我错了。如上所述,我相信如果响应中的任何项在“if modified since”时间戳之后被修改,则会返回整个响应。这使得标题看起来不起作用。但我将时间戳设置为尽可能接近当前时间,并得到了一个“304 Not modified”响应,正如Tom在下面的回答中所报告的。其他人(内容制作人)也可以访问我正在测试的Vimeo帐户,我不知道他们最近修改了内容。

Vimeo没有对此进行记录,但我通过实验发现:

由于
存在于将来而被修改时,它将被忽略。
否则,报头将按预期工作。但请注意您的时区和可能出现的几秒钟的时钟偏移

Vimeo的修改时间显示在API响应中,在我的例子中:

如果自2019年5月22日星期三09:56:25 GMT起修改,则返回一个
304未修改的
,以反映我的情况



我已向Vimeo提交了一个支持请求,以澄清或更改此行为。

感谢您的回复!这是有道理的,但如果我的<代码>自
日期以来进行了修改,即使它是在过去设置的,我仍然会从中获得结果。我正在调用<代码>$response=$Vimeo->request('/me/videos',array('page'=>1,'fields'=>'modified\u time')),'GET',true,array('If-Modified-Since'=>'Fri,2019年5月24日14:42:36 GMT');
其中一个结果是“[Modified_time]=>2019-05-12T08:07:30+00:00”。我错了。正如我在问题中提到的,如果响应中的任何项目在“If-Modified-Since”之后被修改,我相信整个响应都会返回时间戳。这使得标题看起来不起作用。但我将时间戳设置为尽可能接近当前时间,并且正如您所报告的那样,我得到了“304未修改”响应。其他(内容制作者)还可以访问我正在测试的Vimeo帐户,我不知道他们最近修改了内容。谢谢帮助!
"modified_time": "2019-05-22T09:52:45+00:00",