Yii2_创建RESTful API

Nan (/)
2021-11-04T12:37:00+08:00

一. 拷贝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