一. 拷贝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
: andPUT /users/123
: 更新用户123DELETE /users/123
: 删除用户123
OPTIONS /users
: 显示关于末端/users
支持的动词OPTIONS /users/123
: 显示有关末端/users/123
支持的动词