Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php YII2完全是一种奇怪的行为_Php_Rest_Get_Yii2_Restful Architecture - Fatal编程技术网

Php YII2完全是一种奇怪的行为

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

正在尝试使用Yii2高级模板创建API应用程序(基于RESTFull服务)。为此目的创建了子域api.domain.com

目录结构如下所示:

问题是,当我尝试将GET请求发送到
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');