Yii2.0 RESTful风格的Controller与ActiveController

本文详细介绍了Yii2.0中RESTful风格的Controller如何工作,特别是内容协商、HTTP方法验证、用户认证和速率限制。yii estController通过过滤器实现RESTful功能,如ContentNegotiator、VerbFilter、AuthMethod和RateLimiter。同时,讨论了无状态认证和速率限制的实现,以及如何自定义RESTful API的行为和HTTP动词映射。ActiveController的checkAccess()方法确保了数据访问权限控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

yii\rest\Controller提供的大多数RESTful API功能通过过滤器实现. 特别是以下过滤器会按顺序执行:

  • yii\filters\ContentNegotiator: 支持内容协商。
  • yii\filters\VerbFilter: 支持HTTP 方法验证; 
  • yii\filters\AuthMethod: 支持用户认证;
  • yii\filters\RateLimiter: 支持频率限制.

这些过滤器都在yii\rest\Controller::behaviors()方法中声明。原本的声明如下:

    /**
     * @inheritdoc
     */
    public function behaviors()
    {
        return [
            'contentNegotiator' => [
                'class' => ContentNegotiator::className(),
                'formats' => [
                    'application/json' => Response::FORMAT_JSON,
                    'application/xml' => Response::FORMAT_XML,
                ],
            ],
            'verbFilter' => [
                'class' => VerbFilter::className(),
                'actions' => $this->verbs(),
            ],
            'authenticator' => [
                'class' => CompositeAuth::className(),
            ],
            'rateLimiter' => [
                'class' => RateLimiter::className(),
            ],
        ];
    }
首先是yii\filters\ContentNegotiator过滤器,该过滤器是用于内容协商的, 例如, 如果一个 RESTful API 请求中包含以下 header,
Accept: application/json; q=1.0, */*; q=0.1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值