Laravel 5.4:Api路线列表

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路由部分,列表可以正常工作.

我在这做错了什么?

web*_*Dev 9

不要使用中间件,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)