yii2 RESTful API 版本控制

今天我们聊下yii2 api 的版本控制问题。api接口按理论上来说,经常会更新的,还有会接所有语言。所以设置版本还是很重要的。废话少说。

一、目录结构 创建modules v1 v2 controllers 文件夹 和 Module.php 文件
在这里插入图片描述
二 、编辑Module.php 文件这个是配置初始化的文件,必须要有。

<?php
namespace app\modules\v1;

class Module extends \yii\base\Module
{

	public $controllerNamespace = 'app\modules\v1\controllers';

	public function init()
	{
		parent::init();
	}
}```



三、在 app/modules/v1/controllers 或 app/modules/v2/controllers 创建MapController.php

<?php
namespace app\modules\v1\controllers;
use yii;
use yii\rest\ActiveController;


/**
 * Class MapController
 * @package app\controllers
 *   城市
 */


class MapController extends ActiveController
{
    public $modelClass = 'common\models\Map';



    public function actionSearch() {

        $modelClass = $this->modelClass;

        $params = Yii::$app->request->queryParams;

        $where = [

            'pid'=>isset($params['id'])?$params['id']:0
        ];

        return $modelClass::find()->where($where)->all();
    }


}

四、编辑配置文件main.php,截取的代码

return [
    'id' => 'app-app',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log'],
    //配置版本文件
    'modules' => [
        'v1' => [
            'class' => 'app\modules\v1\Module'

        ],
        'v2' => [
            'class' => 'app\modules\v2\Module'
        ]
    ],
    'controllerNamespace' => 'app\controllers',

    'components' => [
        'request' => [
            'csrfParam' => '_csrf-app',
        ],



'urlManager' => [

            'enablePrettyUrl' => true,
            'enableStrictParsing' => true,
            'showScriptName' => false,

            'rules' => [


                // ['class' => 'yii\rest\UrlRule', 'controller' => 'article'],
                //城市接口
                [
                    'class' => 'yii\rest\UrlRule',
                    'only'=>['search','test'],
                    'controller' => 'map',
                    'pluralize'=>false,
                    'extraPatterns' => [
                        'GET search' => 'search',
                        'GET test' => 'test'

                    ]

                ],

                [
                    'class' => 'yii\rest\UrlRule',
                    'controller' => [
                        'v1/map',
                        'v2/map',

                    ],
                    'pluralize'=>false,
                    'extraPatterns' => [
                        'GET search' => 'search',
                        'GET test' => 'test'

                    ]

                ],

按照上面的配置理论上是没问题的。我们看一下结果:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_36851500/article/details/90805821