我有一个包含不同API的域名。我需要能够调用类似这样的东西
http://www.mydomain.xx/api1/v1/controller/action
http://www.mydomain.xx/api2/v1/controller/action
我正在使用nginx,我将根映射到/ var / www / myapp / web,我有API的文件夹以及后端和web文件夹并行的前端文件夹。
如何在不创建不同映射的sub-domanis的情况下访问它们?
答案 0 :(得分:0)
将其写为解决方案:您可以使用full URL in the route。
[
'http://www.mydomain.xx/api1/v1/<controller>/<action>' => 'api1module/<controller>/<action>',
'http://www.mydomain.xx/api2/v1/<controller>/<action>' => 'api2module/<controller>/<action>',
]
这假设您将包含的API定义为单独的模块。
根据您的评论:
如果您使用的是不同的域,那么在配置文件中设置变量并使用它可能很方便:
$domain = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : 'http://www.mydomain.xx/';
然后你也可以提取更多的变量:
[
"$domain/<api:(api1|api2)>/<version>/<controller>/<action>' => '<controller>/<action>',
]
在您的控制器中,您可以获取api类型和版本:
public function actionApiAction($api, $version)
{
// ...
}
可能性足够,取决于你想要什么。