Hi people,
I update composer.json with the last tag version of dingo (v1.0.0-beta4). When I try to access to any route with a different HTTP method is not declared in Laravel routes.php file, Dingo is not throwing the correct Exception, and produces an Internal Server Error with 500 HTTP error code and the message (API_DEBUGis true):
{
"message": "Undefined variable: response",
"status_code": 500,
"debug": {
"line": 585,
"file": "MYFAKEPATH\\vendor\\dingo\\api\\src\\Routing\\Router.php",
"class": "ErrorException",
"trace": [
"#0 MYFAKEPATH\\vendor\\dingo\\api\\src\\Routing\\Router.php(585): Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleError(8, 'Undefined varia...', 'E:\\\\Cristiam\\\\Doc...', 585, Array)",
"#1 MYFAKEPATH\\vendor\\dingo\\api\\src\\Http\\Middleware\\Request.php(123): Dingo\\Api\\Routing\\Router->dispatch(Object(Dingo\\Api\\Http\\Request))",
"#2 [internal function]: Dingo\\Api\\Http\\Middleware\\Request->Dingo\\Api\\Http\\Middleware\\{closure}(Object(Dingo\\Api\\Http\\Request))",
"#3 MYFAKEPATH\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(150): call_user_func(Object(Closure), Object(Dingo\\Api\\Http\\Request))",
"#4 MYFAKEPATH\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode.php(44): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Dingo\\Api\\Http\\Request))",
"#5 [internal function]: Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode->handle(Object(Dingo\\Api\\Http\\Request), Object(Closure))",
"#6 MYFAKEPATH\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(136): call_user_func_array(Array, Array)",
"#7 [internal function]: Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Dingo\\Api\\Http\\Request))",
"#8 MYFAKEPATH\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(103): call_user_func(Object(Closure), Object(Dingo\\Api\\Http\\Request))",
"#9 MYFAKEPATH\\vendor\\dingo\\api\\src\\Http\\Middleware\\Request.php(124): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))",
"#10 MYFAKEPATH\\vendor\\dingo\\api\\src\\Http\\Middleware\\Request.php(100): Dingo\\Api\\Http\\Middleware\\Request->sendRequestThroughRouter(Object(Dingo\\Api\\Http\\Request))",
"#11 [internal function]: Dingo\\Api\\Http\\Middleware\\Request->handle(Object(Illuminate\\Http\\Request), Object(Closure))",
"#12 MYFAKEPATH\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(136): call_user_func_array(Array, Array)",
"#13 [internal function]: Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))",
"#14 MYFAKEPATH\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\\Http\\Request))",
"#15 [internal function]: Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))",
"#16 MYFAKEPATH\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(103): call_user_func(Object(Closure), Object(Illuminate\\Http\\Request))",
"#17 MYFAKEPATH\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Kernel.php(132): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))",
"#18 MYFAKEPATH\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Kernel.php(99): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter(Object(Illuminate\\Http\\Request))",
"#19 MYFAKEPATH\\public\\index.php(54): Illuminate\\Foundation\\Http\\Kernel->handle(Object(Illuminate\\Http\\Request))",
"#20 {main}"
]
}
}
In the previous tag (v1.0.0-beta3), Dingo showed the correct exception and the correct 405 HTTP error code (Method Not Allowed) and the message (API_DEBUGis false, not neccesary):
{
"message": "405 Method Not Allowed",
"status_code": 405
}
This is my routes.php file with the route i was talking about:
$api = app('Dingo\Api\Routing\Router');
$api->version('v1', function ($api) {
$api->group(['namespace' => 'App\Http\Controllers'], function ($api) {
$api->post('/oauth/authorize', 'Auth\OAuthController@authorizeClient');
$api->group(['middleware' => ['api.auth']], function ($api) {
$api->put('/users/password', 'UsersController@updatePassword');
});
});
});
The error happened when I tried to access the route api/users/password with POST and not with PUT method.
I was checking the commits to file Router.php (where is the error) and there are some modifications to the way the errors are throwed.
Thanks a lot.
Yea in aiming to fix another bug, this one seems to have shown up. Will fix this regression
+1
Composer update again, I reverted the problem commit and tagged a new beta.
Most helpful comment
Yea in aiming to fix another bug, this one seems to have shown up. Will fix this regression