Php YII2完全是一种奇怪的行为
正在尝试使用Yii2高级模板创建API应用程序(基于RESTFull服务)。为此目的创建了子域api.domain.com 目录结构如下所示: 问题是,当我尝试将GET请求发送到Php YII2完全是一种奇怪的行为,php,rest,get,yii2,restful-architecture,Php,Rest,Get,Yii2,Restful Architecture,正在尝试使用Yii2高级模板创建API应用程序(基于RESTFull服务)。为此目的创建了子域api.domain.com 目录结构如下所示: 问题是,当我尝试将GET请求发送到api.domain.com/users时,会得到以下响应: { "name": "Not Found", "message": "Page not found.", "code": 0, "s
api.domain.com/users
时,会得到以下响应:
{
"name": "Not Found",
"message": "Page not found.",
"code": 0,
"status": 404,
"type": "yii\web\NotFoundHttpException",
"previous": {
"name": "Invalid Route",
"message": "Unable to resolve the request \"user/index\".",
"code": 0,
"type": "yii\base\InvalidRouteException"
}
}
以下是配置文件:
以下是控制器(位于控制器文件夹中):
问题是。。。
我做错了什么?请确保已将
api
应用程序路径添加到公共文件夹中的bootstrap.php
。它必须看起来像:
<?php
Yii::setAlias('common', dirname(__DIR__));
Yii::setAlias('frontend', dirname(dirname(__DIR__)) . '/frontend');
Yii::setAlias('backend', dirname(dirname(__DIR__)) . '/backend');
Yii::setAlias('console', dirname(dirname(__DIR__)) . '/console');
Yii::setAlias('api', dirname(dirname(__DIR__)) . '/api'); <-- this line
三件事:
支票多元化。例如:“v1/post”应为“v1/posts”
添加“操作”前缀。例如:“actionImport()”
烤肉串格式。例如:“v1/getSample”应为“v1/get sample”
如果需要,在main.php:urlManager中添加规则“extraPatterns”。例:
['class'=>'yii\rest\UrlRule','controller'=>'v1/report','extraPatterns'=>['analytics'=>'analytics',
'报告'=>'报告']]
你的.htaccess文件呢?是否为清除URL支持设置了额外的服务器配置?@SalemOuerdani nginx文件已配置。它的路线是正确的。不确定哪里出了问题,但您能否尝试从components[Request]
中删除components[response]
和\yii\web\Request
类,并尝试是否有效?您可以检查一下,我的API在这些配置中运行良好。@Salemourdani响应正常。该错误与此url调用的ResponseMetry无关api.domain.com/index.php?r=users
,是否有效?在.htacces中,您可以隐藏index.php
部分:这为我修复了它,但我的bootstrap.php与Yii::setAlias('@api',dirname(dirname(uu DIR_u))稍有不同。/api');