YII2.0 高级模板增加api [ 2.0 版本 ]
第一步进入高级模板根目录,复制backend改名为api
cp backend/ api -r
第二步复制api初始化模板
cp -a environments/dev/frontend environments/dev/api
cp -a environments/prod/frontend environments/prod/api
第三步添加api初始化代码,在根目录下/environments/index.php
return [
    'Development' => [
        'path'                   => 'dev',
        'setWritable'            => [
            'backend/runtime',
            'backend/web/assets',
            'frontend/runtime',
            'frontend/web/assets',
            'api/runtime',  //add api
            'api/web/assets',  //add api
        ],
        'setExecutable'          => [
            'yii',
            'tests/codeception/bin/yii',
        ],
        'setCookieValidationKey' => [
            'backend/config/main-local.php',
            'frontend/config/main-local.php',
            'api/config/main-local.php', //add api
        ],
    ],
    'Production'  => [
        'path'                   => 'prod',
        'setWritable'            => [
            'backend/runtime',
            'backend/web/assets',
            'frontend/runtime',
            'frontend/web/assets',
            'api/runtime',  //add api
            'api/web/assets',  //add api
        ],
        'setExecutable'          => [
            'yii',
        ],
        'setCookieValidationKey' => [
            'backend/config/main-local.php',
            'frontend/config/main-local.php',
            'api/config/main-local.php',  //add api
        ],
    ],
];
第四步初始化模板
php init
第五步给api添加别名,在根目录下/common/config/bootstrap.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');  //add api
第六步修改api配置文件,在根目录下/api/config/main.php
'id'                  => 'app-api',
'controllerNamespace' => 'api\controllers',
'components'          => [
        //其他代码
        'urlManager'   => [
            "enablePrettyUrl"     => true,
            "enableStrictParsing" => true,
            "showScriptName"      => false,
            "suffix"              => "",
            "rules"               => [
                ['class' => 'yii\rest\UrlRule', 'controller' => ['yours controller']],
            ],
        ],
    ],
最后可以建立相应的控制器了,实现api
晦涩de咚
            注册时间:2015-08-03
最后登录:2020-09-04
在线时长:356小时20分
    最后登录:2020-09-04
在线时长:356小时20分
- 粉丝36
- 金钱13598
- 威望340
- 积分20558


共 3 条评论
为什么 要一定要拷贝backend呢? 建议改为frontend
并且增加多应用免登陆 同样的教程复制过复制过去 有什么意义呢?
表示自己在学习,记录一下过程,防止以后忘记;有什么好的建议希望指出;谢谢亲,
改为frontend的意义能和我解释下吗?免登陆也请兄弟指导下拉。
@晦涩de咚 backend 是不提供user相关服务的 建立多个应用主体的 很少有两个管理应用的吧?你觉得呢?
@小酒酒 怎么没user相关服务?用frontend不合适的,它存在大量的注册和登陆无用逻辑代码;对了,你说的免登陆什么意思?是不是access_token验证的意思?还是什么?
@晦涩de 一站登陆
@小酒酒 能写个教程教教我吗?表示很想学习下。
请问这样用不用修改api里面所有的namespace?
应该是要修改的把,我觉得