Gam*_*mer 4 php api rest routing laravel
我有以下几行 routes/api.php
Route::middleware('api')->get('/posts', function (Request $request) {
Route::resource('posts','ApiControllers\PostsApiController');
});
Run Code Online (Sandbox Code Playgroud)
当我点击http://localhost:8000/api/posts它时它会变回空白,但当我将上述路线移动到routes/web.php这样时:
Route::group(['prefix' => 'api/v1'],function(){
Route::resource('posts','ApiControllers\PostsApiController');
});
Run Code Online (Sandbox Code Playgroud)
有用.
作为提醒我已经清除了路由缓存文件php artisan route:clear,php artisan route:list当我routes/web.php空了并且routes/api.php具有上述路由时,我的路由列表随附:
+--------+----------+-------------+------+---------+------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+----------+-------------+------+---------+------------+
| | GET|HEAD | api/posts | | Closure | api |
+--------+----------+-------------+------+---------+------------+
Run Code Online (Sandbox Code Playgroud)
请注意,对于Web路由部分,列表可以正常工作.
我在这做错了什么?
不要使用中间件,api并查看API路由的以下路由示例
示例1(在您的api.php中)
Route::get('test',function(){
return response([1,2,3,4],200);
});
Run Code Online (Sandbox Code Playgroud)
访问此路线为
localhost/api/test
Run Code Online (Sandbox Code Playgroud)
示例2(如果您需要api身份验证,使用laravel passport的基于令牌的身份验证)
Route::get('user', function (Request $request) {
///// controller
})->middleware('auth:api');
Run Code Online (Sandbox Code Playgroud)
您可以获取此路由的请求,但您需要传递访问令牌,因为auth:api已使用中间件.
注意:看/app/http/kernel.php
,你可以找到
protected $routeMiddleware = [
//available route middlewares
]
Run Code Online (Sandbox Code Playgroud)
这个文件(kernel.php)中不得有这样的(api)类型的中间件用于路由,除非你创建一个,这就是你不能使用中间件的原因api.
在这里,我如何创建REST API(api.php)
//All routes goes outside of this route group which does not require authentication
Route::get('test',function(){
return response([1,2,3,4],200);
});
//following Which require authentication ................
Route::group(['prefix' => 'v1', 'middleware' => 'auth:api'], function(){
Route::get('user-list',"Api\ApiController@getUserList");
Route::post('send-fax', [
'uses'=>'api\ApiController@sendFax',
'as'=>'send-fax'
]);
Route::post('user/change-password', [
'uses'=>'api\ApiController@changePassword',
'as'=>'user/change-password'
]);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22313 次 |
| 最近记录: |