本文共 2640 字,大约阅读时间需要 8 分钟。
Yii2实现RESTful风格的API的流程如下:
1、WEB前端(frontend)和后端(backend)的同级目录,新建一个文件夹,命名api,api中文件完全复制一份原始的backend中文件即可2、需要修改common\config\bootstrap.php文件,对新建的应用增加alias别名
Yii::setAlias('@api', dirname(dirname(DIR)) . '/api');
3、保证你的web服务器开启rewrite规则!配置apache或nginx!这里请google或百度下。
nginx中在conf文件夹中vhost.conf或nginx.conf中相关位置加入:location / {
try_files $uri $uri/ /index.php$is_args$args;}
apache中在对应的api/web(域名指向的服务器目录中)加入.htaccess:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php
4、api应用程序美化路由(注意里面的括弧、名字的大小写,类名习惯驼峰式,但是controller 对应的控制器名一定要小写)
接着配置api/config/main.php文件'urlManager' => [
'enablePrettyUrl' => true,'showScriptName' => false,'enableStrictParsing' => true,'rules' => [ ['class'=>'yii\rest\UrlRule','controller'=>'article'], ], ],
如果担心影响其他访问地址(如gii无法连接)可以先注释'enableStrictParsing' =>true,传到服务器后开启即可(增加安全性)
5、准备工作好啦,开始写conroller与model:
在www根目录-->common-->models中新建文件Article.php(可以使用Gii)<?php
namespace common\models;
use Yii;
/**
- This is the model class for table "article".
- @property int $id ID
- @property string $title 标题
- @property string $content 内容
- @property int $category_id 分类
- @property int $status 状态
- @property int $created_by 创建人
- @property int $created_at 创建时间
@property int $updated_at 最后修改时间
*/class Article extends \yii\db\ActiveRecord{ /**
- @inheritdoc*/public static function tableName(){ return 'article';}
/**
- @inheritdoc*/public function rules(){ return [[['id', 'title', 'content'], 'required'],[['id', 'category_id', 'status', 'created_by', 'created_at', 'updated_at'], 'integer'],[['content'], 'string'],[['title'], 'string', 'max' => 512],];}
/**
- @inheritdoc*/public function attributeLabels(){ return ['id' => 'ID','title' => 'Title','content' => 'Content','category_id' => 'Category ID','status' => 'Status','created_by' => 'Created By','created_at' => 'Created At','updated_at' => 'Updated At',];}}
然后在api中controllers中新建文件:ArticleController.php
<?php
namespace api\controllers;use yii\rest\ActiveController;use common\models\Article;/**
*/
class ArticleController extends ActiveController{// function __construct(argument)
// { // # code...// }public $modelClass='\common\models\Article';}
6、访问链接查看接口返回值:
已经能够很方便的获取我们表中的数据了。当然,yii2还对该api封装了如下操作:GET /articles: 逐页列出所有用户
HEAD /articles: 显示用户列表的概要信息POST /articles: 创建一个新用户GET /articles/123: 返回用户 123 的详细信息HEAD /articles/123: 显示用户 123 的概述信息PATCH /articles/123 and PUT /users/123: 更新用户123DELETE /articles/123: 删除用户123OPTIONS /articles: 显示关于末端 /users 支持的动词OPTIONS /articles/123: 显示有关末端 /users/123 支持的动词转载于:https://blog.51cto.com/13238147/2148828