码农日记

薄洪涛的个人博客

Yii2.0搭建接口模块教程

最近我需要做一个大项目中的一个模块,考虑用前后端分离,所以想自己搭建一套基于Yii2.0的restful接口出来,本来的时候老大想让我用spring boot,无奈我太菜只会php.....

教程开始:

先说下我的目录接口

|-admin-lte  后台
|-api        接口
|-yii-advanced  Yii源码

这样的通过引入的方式使用Yii,可以节省服务器的存储空间;

1、和yii源码建立api文件夹

2、建立如下文件目录

├─config
│      bootstrap.php
│      db.php
│      main-local.php
│      main.php
│      params.php
│
├─modules
│  └─v1
│      │  Module.php
│      │
│      ├─controllers
│      └─models
└─web
        index.php

web目录下建立index.php引入yii源码

<?php
defined ( 'YII_DEBUG' ) or define ( 'YII_DEBUG', true );
defined ( 'YII_ENV' ) or define ( 'YII_ENV', 'dev' );
require (__DIR__ . '/../../yii2-advanced/vendor/autoload.php');
require (__DIR__ . '/../../yii2-advanced/vendor/yiisoft/yii2/Yii.php');
require (__DIR__ . '/../../yii2-advanced/common/config/bootstrap.php');
require (__DIR__ . '/../config/bootstrap.php');
$config = yii\helpers\ArrayHelper::merge ( require (__DIR__ . '/../../yii2-advanced/common/config/main.php'), require (__DIR__ . '/../config/main.php'), require (__DIR__ . '/../config/main-local.php') );
$application = new yii\web\Application ( $config );
$application->run ();

main.php中配置

return [
    'id' => 'app-back-admin',
    'language' => 'zh-CN',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log'],
    'defaultRoute' => 'site/login',
    'controllerNamespace' => 'app\modules\v1\controllers',
    'components' => [
        'user' => [
            'identityClass' => 'app\models\Operators',
            'enableAutoLogin' => true,
        ],
        //api接收json格式数据,一定要配置
        'request' => [
            'cookieValidationKey' => 'ax5Ajm6GbpGhhmNX2lAnAfgwMj2RO2Cq',
            'parsers' => [
                'application/json' => 'yii\web\JsonParser',
            ]
        ],
        //本地日志
        'log' => [
            'traceLevel' => YII_DEBUG ? 3 : 0,
            'targets' => [
                [
                    'class' => 'yii\log\FileTarget',
                    'levels' => ['error'],
                    'logFile' => "@app/runtime/log-" . date('Y-m-d'). '.log'
                ],
            ],
        ],
        //配置路由,如果你要restful风格需要配置,如果配置了此项不配置重写规则会404
        'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
        ],
        //数据库
        'db' => require(__DIR__ . '/db.php')
    ],
    //这个是模块名,比如你的app升级的话,可以建立v2,新版本用v2,老版本用v1,这样就比较清晰
    'modules' => [
        'v1' => [
            'class' => 'app\modules\v1\Module',
        ],
    ],
    'params' => $params,
];

这时候可以考虑使用gii生成大体的配置

image.png

然后在modules里面配置model和controller就可以了

最重要的几点:

1、请让控制器继承ActiveController

2、如果你是apache用户,请在index.php同级建立.htaccess文件

Options +FollowSymLinks
IndexIgnore /
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php

上面的意思是,如果你请求的目录存在,就直接访问,如果不存在,也要交给index.php

3、如果你是nginx用户,那你就需要修改你的nginx配置了,大体差不多,这块我没试

image.png

可能我描述的不是很清楚,大家可以去找代码,传送门


发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-BlogPHP 1.7.3

版权所有 | 转载请标明出处