POST请求在Laravel 5.4的REST API中不起作用

时间:2017-02-13 13:17:55

标签: php post laravel-5.4

我试图在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:内部服务器错误"作为回应。 任何人都可以帮我找出我做错了吗?

1 个答案:

答案 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