zoukankan      html  css  js  c++  java
  • Yii2高速构建RESTful Web服务功能简单介绍

    Yii2相比Yii1而言,一个重大的改进是内置了功能完备的RESTful支持。

    其内置RESTful支持提供了例如以下功能:

    • 使用ActiveRecord的通用接口来高速构建原型;
    • 应答格式协商(缺省支持 JSON 和 XML)。
    • 可定制的对象序列化,支持选择输出哪些列。
    • 请求数据的格式化以及验证错误;
    • 通过HTTP 动词映射实现高效路由;
    • 支持 OPTIONS 和 HEAD 动词;
    • 认证 和 鉴权;
    • 支持 HATEOAS(RESTful的架构约束,超媒体即应用程序状态);
    • 结果缓存。可使用 yiifiltersHttpCache 缓存。
    • 訪问速率限制,避免恶意攻击和服务滥用;
    • 搜索和过滤:
    • 内置数据分页功能;
    • 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服务:

    首先,创建一个控制器类 appcontrollersUserController

    namespace appcontrollers;
    
    use yii
    estActiveController;
    
    class UserController extends ActiveController {
        public $modelClass = 'appmodelsUser';
    }

    然后,改动config中的 urlManager 配置项:

    'urlManager' => [
        'enablePrettyUrl' => true,
        'enableStrictParsing' => true,
        'showScriptName' => false,
        'rules' => [
            ['class' => 'yii
    estUrlRule', 'controller' => 'user'],
        ],
    ]

    这样即可了!

    你能够在你的浏览器中试着訪问下:http://localhost/users。

    这仅仅是用户列表接口,Yii2实际自己主动帮你创建了一整套接口:

    yii2 auto-generated restful interfaces

    完整功能请查阅Yii2中文指南RESTful部分:Yii2 中文权威指南


    by iefreer

  • 相关阅读:
    The Python Standard Library
    Python 中的round函数
    Python文件类型
    Python中import的用法
    Python Symbols 各种符号
    python 一行写多个语句
    免费SSL证书(https网站)申请,便宜SSL https证书申请
    元宇宙游戏Axie龙头axs分析
    OLE DB provider "SQLNCLI10" for linked server "x.x.x.x" returned message "No transaction is active.".
    The operation could not be performed because OLE DB provider "SQLNCLI10" for linked server "xxx.xxx.xxx.xxx" was unable to begin a distributed transaction.
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/6915551.html
Copyright © 2011-2022 走看看