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