harryzheng0907/yii2-rest
Composer 安装命令:
composer require harryzheng0907/yii2-rest
包简介
The enhanced restful api for Yii Framework 2.0
README 文档
README
这个扩展主要是用于增强Yii2 rest api中IndexAction的功能.
相对于官方的IndexAction,该扩展主要增加了以下几个功能
1.搜索功能
http://url/users?id=1&username=LIKE_dmi&created_at=MAX_1398153715&addresses.city=南京
2.显示多级子资源(官方只支持二级子资源(通过expand关键字指定),如users?expand=address)
http://url/users?expand=addresses,friends.addresses&expand-fields=addresses.phone,friends.addresses
3.允许通过子资源排序
http://url/users?sort=addresses.phone DESC,id ASC
4.允许为子资源的表设置别名(防止两个不同的子资源取同一张表时的命名冲突)
use harryzheng0907\rest\ActiveRecord;
class User extends ActiveRecord
{
public static function tableName()
{
return 'user';
}
public function getMainAddresses()
{
return $this->hasMany(Address::className(), ['user_id' => 'id'],'mainAddresses');
}
public function getOtherAddresses()
{
return $this->hasMany(Address::className(), ['user_id' => 'id'],'otherAddresses');
}
}
安装
通过 composer安装
php composer.phar require harryzheng0907/yii2-rest
使用
使用概述
使用方式其实就是两点
- 将IndexAction指向harryzheng0907\rest\IndexAction
- 使用的AR Model要继承自harryzheng0907\rest\ActiveRecord
详细步骤
1.新建一个全局父Controller,继承ActiveController,重新指定IndexAction
namespace app\controllers;
use yii\helpers\ArrayHelper;
class ActiveController extends \yii\rest\ActiveController {
public function actions()
{
return ArrayHelper::merge(parent::actions(),[
'index' => [
'class' => 'harryzheng0907\rest\IndexAction'
]
]);
}
}
2.新建特定资源的AR Model,继承harryzheng0907\rest\ActiveRecord,如user
namespace app\models;
use Yii;
use harryzheng0907\rest\ActiveRecord;
class User extends ActiveRecord
{
public static function tableName()
{
return 'user';
}
}
3.新建特定资源的controller,如user,继承第一步新建的全局controller
namespace app\controllers;
class UserController extends \app\controllers\ActiveController {
public $modelClass = 'app\models\User';
}
4.完成
搜索方式
EQUAL:http://url/users?username=EQUAL_a // username = 'a'
NOTEQUAL:http://url/users?username=NOTEQUAL_a // username != 'a'
NULL:http://url/users?username=NULL_ // username IS NULL
LIKE:http://url/users?username=LIKE_a //username LIKE '%a%'
LLIKE:http://url/users?username=LLIKE_a //username LIKE '%a'
RLIKE:http://url/users?username=RLIKE_a //username LIKE 'a%'
IN:http://url/users?username=IN_a,b,c //username IN ('a','b','c')
NOTIN:http://url/users?username=NOTIN_a,b,c //username NOT IN ('a','b','c')
MIN:http://url/users?age_min=MIN_10 // age >= 10
MAX:http://url/users?age_max=Max_60 //age <= 60
RANGE:http://url/users?birthdate=RANGE_2015-03 //birthdate<=2015-03-31 AND birthdate >= 2015-03-01
Tips
- 子资源的表的别名,必须与子资源的名称一致
use harryzheng0907\rest\ActiveRecord;
class User extends ActiveRecord
{
public static function tableName()
{
return 'user';
}
public function getMainAddresses()
{
return $this->hasMany(Address::className(), ['user_id' => 'id'],'mainAddresses');
}
public function getOtherAddresses()
{
return $this->hasMany(Address::className(), ['user_id' => 'id'],'otherAddresses');
}
}
2.设置排序时,DESC/ASC不可省略
harryzheng0907/yii2-rest 适用场景与选型建议
harryzheng0907/yii2-rest 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 61 次下载、GitHub Stars 达 4, 最近一次更新时间为 2015 年 10 月 04 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「rest」 「api」 「restful」 「yii2」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 harryzheng0907/yii2-rest 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 harryzheng0907/yii2-rest 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 harryzheng0907/yii2-rest 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
A PSR-7 compatible library for making CRUD API endpoints
Api bundle
This is a restful api to onesignal.
A RESTful API package for the Laravel and Lumen frameworks.
Simple and lightweight HTTP client based cURL
A Flickr wrapper to allow you to call the Flickr api with Guzzle as the backend.Goal is to have 100% Flickr api coverage rather than just upload/display photos (currently at 23%).
统计信息
- 总下载量: 61
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 4
- 点击次数: 9
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: BSD
- 更新时间: 2015-10-04