接口版本

Api 接口调用控制器默认占用 v1 版本号,在二次开发中您都应该另起一个版本号进行新增或修改。

下面将举例对App控制器进行「新增接口」和「修改接口」的操作:

[ 新增接口 ]

  1. application\api\controller目录下新建v2目录。

  2. v2目录下创建控制器类App,文件名为App.php,并且继承于\app\api\controller\v1\App

    1. <?php
    2. namespace app\api\controller\v2;
    3. class App extends \app\api\controller\v1\App
    4. {
    5. /**
    6. * 方法路由器
    7. * @access protected
    8. * @return array
    9. */
    10. protected static function initMethod()
    11. {
    12. return [
    13. // 添加一个广告
    14. 'test.app.item' => ['testAppItem', false],
    15. ];
    16. }
    17. public function testAppItem()
    18. {
    19. return 'v2新增接口调用成功';
    20. }
    21. }
  3. 调用并测试接口:http://localhost:8080/api/v2/app/method/test.app.item,返回请求结果。

    1. {
    2. "data": "v2新增接口调用成功",
    3. "message": "success",
    4. "status": 200
    5. }
  4. 如果不是对已有接口进行操作而是新建的话,则应该继承\app\api\controller\CareyShop

    1. <?php
    2. namespace app\api\controller\v2;
    3. use app\api\controller\CareyShop;
    4. class NewApi extends CareyShop
    5. {
    6. /**
    7. * 方法路由器
    8. * @access protected
    9. * @return array
    10. */
    11. protected static function initMethod()
    12. {
    13. return [
    14. ];
    15. }
    16. }

[ 修改接口 ]

  1. application\api\controller目录下新建v2目录。

  2. v2目录下创建控制器类App,文件名为App.php,并且继承于\app\api\controller\CareyShop

  3. 修改控制器方法路由器,以命名空间的方式指向待新建的模型。

    1. <?php
    2. namespace app\api\controller\v2;
    3. use app\api\controller\CareyShop;
    4. class NewApi extends CareyShop
    5. {
    6. /**
    7. * 方法路由器
    8. * @access protected
    9. * @return array
    10. */
    11. protected static function initMethod()
    12. {
    13. return [
    14. // 获取应用列表
    15. 'get.app.list' => ['getAppList', 'app\api\model\App']
    16. ];
    17. }
    18. }
  4. 新建一个模型后继承\app\common\model\CareyShop,或继承被修改的模型。

    之所以新建一个模型是不建议对框架的模型进行改动,用新建或继承模型的方式比较稳妥。 ```php <?php namespace app\api\model;

    use app\common\model\CareyShop;

    class App extends CareyShop {

    1. /*
    2. * 获取应用列表
    3. * @access public
    4. * @param array $data 外部数据
    5. * @return bool
    6. */
    7. public function getAppList($data)
    8. {
    9. return ['修改后的接口']
    10. }

    } ```

  5. 调用并测试接口:http://localhost:8080/api/v2/app/method/get.app.list,返回请求结果。

    1. {
    2. "data": [
    3. "修改后的接口"
    4. ],
    5. "message": "success",
    6. "status": 200
    7. }
  6. 确认 v1 版本号的接口是否也正常:http://localhost:8080/api/v1/app/method/get.app.list,返回请求结果。

    1. {
    2. "data": {
    3. "app_id": 1,
    4. "app_name": "admin"
    5. },
    6. "message": "success",
    7. "status": 200
    8. }

备注: 在示例中方法路由器的具体使用可以查阅,接口控制器