我在 Restler 版本 3.0.0rc4 中遇到版本控制和身份验证类问题。
在 index.php 文件中,身份验证类和用户类添加如下:
Defaults::$useUrlBasedVersioning = true;
$r->setAPIVersion(2);
$r->addAuthenticationClass('OAuth2');
$r->addAPIClass('User');
身份验证类如下所示:
namespace v2;
use Luracast\Restler\iAuthenticate;
class OAuth2 implements iAuthenticate
{
...
}
用户类如下所示:
namespace v2;
class User
{
...
}
这两个类都放置在 v2 文件夹中。
调用身份验证类(获取令牌)没有问题。调用User类时,由于Restler无法在Restler->authenticate中初始化认证类,会遇到内部服务器错误。正在初始化的类是“OAuth2”,它应该是“v2\OAuth2”。
一个可能的解决方案是像这样添加 te 身份验证类:
$r->addAuthenticationClass('v2\\OAuth2');
此解决方案出现的问题是 Resources 类为身份验证类输出 v1 和 v2 url,而该类仅存在于 v2 中:
- v1/resources/oauth2-v2.json 显示一个 api 路径:“/v1/oauth2/access_token.{format}”
- v2/resources/oauth2-v2.json 显示一个 api 路径:“/v2/oauth2/access_token.{format}”
任何人都可以对此有所了解吗?是否可以为每个版本的 api 使用不同的身份验证类?Resources 类如何显示身份验证类的 v1 和 v2 路径,而仅存在 v2 路径?