Yii2相比Yii1而言,一个重大的改进是内置了功能完备的RESTful支持。
其内置RESTful支持提供了例如以下功能:
- 使用ActiveRecord的通用接口来高速构建原型;
- 应答格式协商(缺省支持 JSON 和 XML)。
- 可定制的对象序列化,支持选择输出哪些列。
- 请求数据的格式化以及验证错误;
- 通过HTTP 动词映射实现高效路由;
- 支持 OPTIONS 和 HEAD 动词;
- 认证 和 鉴权;
- 支持 HATEOAS(RESTful的架构约束,超媒体即应用程序状态);
- 结果缓存。可使用 yii\filters\HttpCache 缓存。
- 訪问速率限制,避免恶意攻击和服务滥用;
- 搜索和过滤:
- 内置数据分页功能;
- API版本号控制。
这些功能假设都是自己来实现,且还要有良好的扩展性、定制性,
还是要花费不少精力的,只是好在Yii2已经都非常好的实现了而且还非常easy进行扩展。
以下是一些功能的简介:
Yii2中可定制输出变得非常简单,比方想输出某些列或排除某些列。仅仅须要简单的覆盖(override)活动记录的fields方法即可。
Yii2中对API版本号控制的支持结合了业界流行的两种方式,一种为在URL中嵌入版本号号(如http://api.techbrood.com/v1/users),一种是在HTTP Accept头中指定。
Yii2曾经者支持大版本号,而以后者支持小版本号号。这样能够在简化代码、代码分离和复用之间达成较好的平衡。
Yii2中的安全机制支持3种方式,HTTP BASIC AUTH。查询參数(即在URL參数中包括訪问令牌)和 开源协议 OAUTH2。
以下使用最少的语句来实现一个用户(User)资源的完整Web服务:
首先,创建一个控制器类 app\controllers\UserController
:
namespace app\controllers; use yii\rest\ActiveController; class UserController extends ActiveController { public $modelClass = ‘app\models\User‘; }
然后,改动config中的 urlManager 配置项:
‘urlManager‘ => [ ‘enablePrettyUrl‘ => true, ‘enableStrictParsing‘ => true, ‘showScriptName‘ => false, ‘rules‘ => [ [‘class‘ => ‘yii\rest\UrlRule‘, ‘controller‘ => ‘user‘], ], ]
这样即可了!
你能够在你的浏览器中试着訪问下:http://localhost/users。
这仅仅是用户列表接口,Yii2实际自己主动帮你创建了一整套接口:
完整功能请查阅Yii2中文指南RESTful部分:Yii2 中文权威指南
by iefreer
时间: 2024-10-27 13:44:26