晦涩de咚 2016-07-07 12:02:32 8936次浏览 3条评论 9 1 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

觉得很赞
  • 评论于 2016-07-07 16:01 举报

    为什么 要一定要拷贝backend呢? 建议改为frontend

    并且增加多应用免登陆 同样的教程复制过复制过去 有什么意义呢?

    5 条回复
    评论于 2016-07-07 16:07 回复

    表示自己在学习,记录一下过程,防止以后忘记;有什么好的建议希望指出;谢谢亲,
    改为frontend的意义能和我解释下吗?免登陆也请兄弟指导下拉。

    评论于 2016-07-07 16:11 回复

    backend 是不提供user相关服务的 建立多个应用主体的 很少有两个管理应用的吧?你觉得呢?

    评论于 2016-07-07 16:18 回复

    怎么没user相关服务?用frontend不合适的,它存在大量的注册和登陆无用逻辑代码;对了,你说的免登陆什么意思?是不是access_token验证的意思?还是什么?

    评论于 2016-07-07 16:22 回复

    @晦涩de 一站登陆

    评论于 2016-07-07 16:29 回复

    能写个教程教教我吗?表示很想学习下。

  • 评论于 2017-05-16 12:43 举报

    请问这样用不用修改api里面所有的namespace?

  • 评论于 2017-06-27 16:22 举报

    应该是要修改的把,我觉得

您需要登录后才可以评论。登录 | 立即注册