123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- <?php
- /**
- * @link http://www.yiiframework.com/
- * @copyright Copyright (c) 2008 Yii Software LLC
- * @license http://www.yiiframework.com/license/
- */
- namespace yii\rest;
- use Yii;
- use yii\filters\auth\CompositeAuth;
- use yii\filters\ContentNegotiator;
- use yii\filters\RateLimiter;
- use yii\filters\VerbFilter;
- use yii\web\Response;
- /**
- * Controller is the base class for RESTful API controller classes.
- *
- * Controller implements the following steps in a RESTful API request handling cycle:
- *
- * 1. Resolving response format (see [[ContentNegotiator]]);
- * 2. Validating request method (see [[verbs()]]).
- * 3. Authenticating user (see [[\yii\filters\auth\AuthInterface]]);
- * 4. Rate limiting (see [[RateLimiter]]);
- * 5. Formatting response data (see [[serializeData()]]).
- *
- * For more details and usage information on Controller, see the [guide article on rest controllers](guide:rest-controllers).
- *
- * @author Qiang Xue <qiang.xue@gmail.com>
- * @since 2.0
- */
- class Controller extends \yii\web\Controller
- {
- /**
- * @var string|array the configuration for creating the serializer that formats the response data.
- */
- public $serializer = 'yii\rest\Serializer';
- /**
- * {@inheritdoc}
- */
- public $enableCsrfValidation = false;
- /**
- * {@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(),
- ],
- ];
- }
- /**
- * {@inheritdoc}
- */
- public function afterAction($action, $result)
- {
- $result = parent::afterAction($action, $result);
- return $this->serializeData($result);
- }
- /**
- * Declares the allowed HTTP verbs.
- * Please refer to [[VerbFilter::actions]] on how to declare the allowed verbs.
- * @return array the allowed HTTP verbs.
- */
- protected function verbs()
- {
- return [];
- }
- /**
- * Serializes the specified data.
- * The default implementation will create a serializer based on the configuration given by [[serializer]].
- * It then uses the serializer to serialize the given data.
- * @param mixed $data the data to be serialized
- * @return mixed the serialized data.
- */
- protected function serializeData($data)
- {
- return Yii::createObject($this->serializer)->serialize($data);
- }
- }
|