我想重定向我的测试用户到我的应用程序引擎应用程序的最新版本。我听说你可以通过url latest-dot-project-id.appspot.com
访问最新版本,但这只是提供默认版本。
有什么想法如何重定向到最新的版本,它可能有url version-dot-project-id.appspot.com
?
我知道我可以访问API以获得最新版本,但我也有麻烦从那里获得数据与服务帐户。
您应该能够使用通用的latest关键字(而不是找出该模块的特定版本是最新的)来访问您需要的任何模块:
latest-dot-<modulename>-dot-<appname>.appspot.com
。
至少在python中是有效的…
在latest-dot-project-id.appspot.com
构造中,您没有指定模块名称,这可能是您只击中默认模块的原因。
通过URL路由的更多细节文档
毫无疑问,应用程序没有程序访问可用版本的权限,所以弄清楚"最新"版本是什么需要你提供一个保留名称。test
怎么样?使用version: test
上传要测试的版本,并让测试人员点击它。然后,当您想要使用测试版本时,请将其与"真实"版本一起再次上传,然后将其设置为默认值。假设您没有更改任何内容,第二次上传应该会很快完成。
顺便说一下,许多人在他们的测试版本中使用一个完全独立的应用程序名称,这样测试人员就不会修改生产数据了。
如果测试用户不是主动返回反馈的预定义组,并且需要/期望的是在监视日志等的同时在一段时间内缓慢推出功能的方法,那么您可以利用App Engine的流量分割功能。这可以在云开发者控制台
的应用引擎项目页面的版本页面中找到。流量可以基于cookie或ip地址进行分割。这两者都有一些小怪癖,但可以很容易地解决。
选择按IP地址分片还是按HTTP cookie分片。设置IP地址分割更容易,但cookie分割更精确。
更多关于交通分流的信息在这里
最终使用Google App Engine Admin API获得最新版本。
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"https://appengine.googleapis.com/v1beta4/apps/-----/modules/default/versions");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$headers = array();
$headers[] = 'Authorization: Bearer '.json_decode($client->getAccessToken())->access_token;
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$versions = json_decode(curl_exec ($ch))->versions;
curl_close ($ch);
$newest_version = "0";
foreach($versions as $version){
if(str_replace("-", "", $version->id) > str_replace("-", "", $newest_version)){
$newest_version = $version->id;
}
}