我正在使用Yii2
开发REST API,我正在尝试自定义error response
。默认情况下,如果我在提交请求时使用了错误的凭据,我会看到:
{
"name": "Unauthorized",
"message": "You are requesting with an invalid credential.",
"code": 0,
"status": 401
}
我在哪里以及如何删除code
和name
行?
答案 0 :(得分:2)
在您的应用程序配置中尝试此代码。
exports.config = {
seleniumAddress: 'http://localhost:4444/wd/hub',
framework: 'jasmine2',
specs: ['todo-spec.js'],
onPrepare: function() {
browser.get('http://tmpcmamva07:8888/');
browser.driver.manage().window().maximize();
jasmine.DEFAULT_TIMEOUT_INTERVAL = 90000;
element(by.model('username')).sendKeys('nagabhup');
element(by.model('password')).sendKeys('welcomE@123');
element(by.buttonText('Login')).click();
browser.sleep(2000);
browser.waitForAngular();
}
};
了解更多Details
答案 1 :(得分:0)
我有新的解决方案:
return [
// ...
'components' => [
'response' => [
'format' => yii\web\Response::FORMAT_JSON,
'charset' => 'UTF-8',
'class' => 'yii\web\Response',
'on beforeSend' => function ($event) {
$response = $event->sender;
// exception with http code != 200 and 302
if ($response->statusCode !== 200 && $response->statusCode !== 302) {
$response->data = [
'success' => $response->isSuccessful,
'message' => YII_DEBUG ?$response->data: 'System error'
];
$response->statusCode = 200;
}
// normal response
else{
// both case: controller implement Controller or ActiveController
$result = [
'success' => isset($response->data['success'])?$response->data['success']: true
];
// check message is set
if (isset($response->data['message'])){
$result = array_merge($result, ['message' => $response->data['message']]);
}
else{
// check data is set
// both case: controller implement Controller or ActiveController
if (isset($response->data['data']))
$result = array_merge($result, ['data' => $response->data['data']]);
else{
$result = array_merge($result, ['data' => $response->data]);
}
}
$response->data = $result;
$response->statusCode = 200;
}
},
]
],
];