12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- <?php
- /**
- * @link http://www.yiiframework.com/
- * @copyright Copyright (c) 2008 Yii Software LLC
- * @license http://www.yiiframework.com/license/
- */
- namespace yii\web;
- use yii\base\InvalidParamException;
- use yii\helpers\Json;
- /**
- * Parses a raw HTTP request using [[yii\helpers\Json::decode()]]
- *
- * @author Dan Schmidt <[email protected]>
- * @since 2.0
- */
- class JsonParser implements RequestParserInterface
- {
- /**
- * @var boolean whether to return objects in terms of associative arrays.
- */
- public $asArray = true;
- /**
- * @var boolean whether to throw a [[BadRequestHttpException]] if the body is invalid json
- */
- public $throwException = true;
- /**
- * Parses a HTTP request body.
- * @param string $rawBody the raw HTTP request body.
- * @param string $contentType the content type specified for the request body.
- * @return array parameters parsed from the request body
- * @throws BadRequestHttpException if the body contains invalid json and [[throwException]] is `true`.
- */
- public function parse($rawBody, $contentType)
- {
- try {
- return Json::decode($rawBody, $this->asArray);
- } catch (InvalidParamException $e) {
- if ($this->throwException) {
- throw new BadRequestHttpException('Invalid JSON data in request body: ' . $e->getMessage(), 0, $e);
- }
- return null;
- }
- }
- }
|