如果用户在没有正确凭据的情况下尝试访问REST API,我的yii应用程序会在我的controller.php文件中抛出401错误:
<?xml version="1.0" encoding="UTF-8"?>
<response>
<name>Unauthorized</name><message>Access unavailable.</message>
<code>401</code>
<status>401</status>
<type>yii\web\UnauthorizedHttpException</type>
</response>
以这种格式返回错误:
{
"name": "Access unavailable.",
"message": "You are not authorized.",
"code": 0,
"status": 401
}
如何以JSON格式返回此错误?
?:
我的移动应用程序访问此资源需要一个JSON对象。
答案 0 :(得分:2)
尝试在自定义__construct中添加上面的返回值或更高版本。
recipe.image.url(:medium)
答案 1 :(得分:1)
yii2休息控制器对“接受”HTTP标头作出反应。如果在此标题中仅存在“application / json”,则来自其他控制器的答案将为JSON
答案 2 :(得分:0)
这对我有用。扩展 activeController
并将其放入 api\controllers\ActiveController.php
namespace api\controllers;
class ActiveController extends yii\rest\ActiveController {
public function behaviors() {
$behaviors = parent::behaviors();
$behaviors['contentNegotiator'] = [
'class' => 'yii\filters\ContentNegotiator',
'formats' => [
'application/json' => \yii\web\Response::FORMAT_JSON,
]
];
return $behaviors;
}
}
然后在我的控制器中
use api\controllers\ActiveController;
class blablaController extends ActiveController
{
...
}
现在在未经授权的情况下,我得到一个 JSON 而不是 XML
{"success":false,"data":{"name":"Unauthorized","message":"Your request was made with invalid credentials.","code":0,"status":401}}