我试图在REST API工具中使用post方法发送一些值。 我使用过Laravel 5.4版。 我试过以下代码
Route::post('ws-register',array('uses' => 'AppController@doRegister'));
public function doRegister() {
$rules = array(
'email' => 'required|email|unique:users',
'password' => 'required|alpha_num|min:6|max:15'
);
$messages = array('alpha_spaces' => 'Name must be alphanumeric');
$validator = Validator::make(Input::all(), $rules, $messages);
if ($validator->fails()) {
$error = $validator->errors()->all(':message');
$response['message'] = $error[0];
$response['code'] = false;
} else {
$user = new Users;
$user->email = Input::get('email');
$user->password = Hash::make(Input::get('password'));
$user->save();
$response['user_id'] = $user->id;
$response['message'] = "Success";
$response['code'] = true;
}
}
return Response::json($response);
}
通过REST API POST方法调用时,我得到" 500:内部服务器错误"作为回应。 任何人都可以帮我找出我做错了吗?
答案 0 :(得分:1)
假设您遇到TokenMismatchException in VerifyCsrfToken.php
错误,正如问题评论中所写。
如app/Http/Kernel.php
中所述,VerifyCsrfToken中间件应用于routes/web.php
中的所有路由。但它不适用于routes/api.php
如果您要提出API请求,可能最好将路由放在routes/api.php
文件中。然后,在进行API调用时,请确保在您的请求中添加/api
前缀,如下所示:
POST http://example.app/api/ws-register
但是,如果您仍想在routes/web.php
中保留路线,请考虑添加CSRF保护。有关详情,请访问https://laravel.com/docs/5.4/csrf