【发布时间】:2018-08-26 07:28:47
【问题描述】:
我有一个注册用户路由,它采用name、email 和password。如果数据正确,即存在唯一的电子邮件和参数,它工作得非常好,但如果用户已经注册,那么 Laravel 会以自己的格式发送自动错误消息。我希望返回格式在成功或失败的情况下保持一致。
注册成功返回数据:
{
"status": "success",
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjUsImlzcyI6Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9hcGkvYXV0aC9yZWdpc3RlciIsImlhdCI6MTUyMTI3NTc5MiwiZXhwIjoxNTIxMjc5MzkyLCJuYmYiOjE1MjEyNzU3OTIsImp0aSI6Ik1wSzJSYmZYU1dobU5UR0gifQ.fdajaDooBTwP-GRlFmAu1gtC7_3U4ygD1TSBIqdPHf0"
}
但如果出现错误,它会以其他格式发送数据。
{"message":"The given data was invalid.","errors":{"email":["The email has already been taken."]}}
我希望它们保持一致。成功返回数据很好。但是如果发生故障,我想自定义数据。像这样的:
{"status":"error","message":"The given data was invalid.","errors":{"email":["The email has already been taken."]}}
基本上,我需要status 参数来提供每个响应。
另外,我在使用 Postman 时有一个查询,当发生错误时,输出是纯 HTML,HTML 页面是默认的 Laravel 页面,另一方面,当 Angular 发送相同的请求时,错误是我刚刚粘贴在上面的 json 格式。 由于 Angular 在任何情况下都得到 JSON 响应,这对我来说很好。但是为什么邮递员没有向我显示那个回复。
注册控制器:
public function register(RegisterRequest $request)
{
$newUser = $this->user->create([
'name' => $request->get('name'),
'email' => $request->get('email'),
'password' => bcrypt($request->get('password'))
]);
if (!$newUser) {
return response()->json(['status'=>'error','message'=>'failed_to_create_new_user'], 500);
}
return response()->json([
'status' => 'success',
'token' => $this->jwtauth->fromUser($newUser)
]);
}
注册请求处理程序:
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required',
'email' => 'required | email | unique:users,email',
'password' => 'required'
];
}
【问题讨论】:
标签: php laravel laravel-5 laravel-5.2 laravel-5.3