一. 拷贝backend目录,命名为api

开始url美化后正常网页无法打开404,好像是web目录在服务器层级太多
  • 打开api\config\main.php 修改id,controllerNamespace:

    return [
      'id' => 'app-api',
      'basePath' => dirname(__DIR__),
      'controllerNamespace' => 'api\controllers',
    ]
  • 打开 common\config\main.php 开启url路由美化规则

    'urlManager' => [
              'enablePrettyUrl' => true,
              'showScriptName' => false,
              'rules' => [
              ],
          ],
  • 打开 common\config\bootstrap.php 添加以下别名

    Yii::setAlias('@api', dirname(dirname(__DIR__)) . '/api');
  • 打开 api\controllers 新建一个User控制器,继承 yii\rest\ActiveController,命名为 UserController
    user控制器继承 yii\rest\ActiveController 并指定要操作的模型

    <?php
    namespace api\controllers;
    use yii\rest\ActiveController;
    
    class UserController extend extends ActiveController
    {
      public $modelClass = 'common\models\User';
      
    }

二. 启用JSON 输入

  • 配置 request 应用程序组件的 parsers 属性使用 yii\web\JsonParser 用于 JSON 输入
  • 打开配置文件 api\config\main-local.php 修改为如下代码:

    ...
    'request' => [
              // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
              'cookieValidationKey' => 'P0r2XoT9LCUnyVlSgxBbJOqQxdCJ3i29',
              'parsers' => [
                  'application/json' => 'yii\web\JsonParser',
    
              ],
          ],
    ...

    三. 配置URL规则

  • 为刚才的 user控制器添加url美化规则
  • 打开 api\config\main.php 修改 components属性

    ...
    'urlManager' => [
      'enablePrettyUrl' => true,
      'enableStrictParsing' => true,
      'showScriptName' => false,
      'rules' => [
          ['class' => 'yii\rest\UrlRule', 
          'controller' => 'user'
          ],
      ],
    ]
    ...

四 新建api/web/.htaccess 文件(Apache)

RewriteEngine on
# If a directory or a file exists, use the request directly
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward the request to index.php
    RewriteRule . index.php

五. 创建完成 RESTful API

  • GET /users: 逐页列出所有用户
  • HEAD /users: 显示用户列表的概要信息
  • POST /users: 创建一个新用户
  • GET /users/123: 返回用户 123 的详细信息
  • HEAD /users/123: 显示用户 123 的概述信息
  • PATCH /users/123: and PUT /users/123: 更新用户123
  • DELETE /users/123: 删除用户123
  • OPTIONS /users: 显示关于末端 /users 支持的动词
  • OPTIONS /users/123: 显示有关末端 /users/123 支持的动词

参考文章https://www.yiichina.com/tutorial/1606