Laravel 5.4:API 路由列表

Posted

技术标签:

【中文标题】Laravel 5.4:API 路由列表【英文标题】:Laravel 5.4 : Api route list 【发布时间】:2017-09-20 11:18:07 【问题描述】:

我的routes/api.php 中有以下几行

Route::middleware('api')->get('/posts', function (Request $request) 
    Route::resource('posts','ApiControllers\PostsApiController');
);

当我点击http://localhost:8000/api/posts 时,它会返回空白,但是当我将上述路线移动到routes/web.php 时,如下所示:

Route::group(['prefix' => 'api/v1'],function()
    Route::resource('posts','ApiControllers\PostsApiController');
);

它有效。

提醒一下,当我的routes/web.php 为空且routes/api.php 具有上述路由时,我已经使用php artisan route:clear 清除了路由缓存文件,并且我的路由列表带有php artisan route:list

Domain Method URI Name Action Middleware
GET|HEAD api/posts Closure api

请注意,对于网络路由部分,列表可以正常工作。

我在这里做错了什么?

【问题讨论】:

去掉中间件试试?不要使用 api 中间件 但我们不需要一个吗? 是的,让我在我的回答帖子中解释一下 【参考方案1】:

不要使用中间件 api 并查看以下 API 路由示例

示例 1(在您的 api.php 中)

Route::get('test',function()
    return response([1,2,3,4],200);   
);

访问这条路线

localhost/api/test

示例 2(如果你想要 api 身份验证,使用 laravel 护照基于令牌的身份验证)

Route::get('user', function (Request $request) 
    ///// controller
)->middleware('auth:api');

您可以对该路由进行get请求,但您需要传递访问令牌,因为已使用auth:api中间件。

注意:/app/http/kernel.php 你可以找到

protected $routeMiddleware = [
//available route middlewares
]

除非您创建路由,否则此文件 (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'
    ]);

);

【讨论】:

好的,太好了,如果我不想使用护照,那么哪个更可取,JWT 还是 Oauth2? 我没有使用过JWT,而且passport最终是基于oauth的,passport只是laravel最简单的创建oauth服务器的方法。 oauth 是规范............看看 oauth 服务器是如何工作的以及护照是什么。 当然,它是框架的一部分,你可以使用php artisan安装...请阅读此页面laravel.com/docs/5.4/passport ....这是专门针对 oauth,它的 oauth 但是和 laravel 通过创建一个库包作为“Passport”来轻松实现 oauth 服务器

以上是关于Laravel 5.4:API 路由列表的主要内容,如果未能解决你的问题,请参考以下文章

Angular 4 和 Laravel 5.4 的刷新路由问题

Laravel 5.4 Api 路线 401

方法验证不存在 - Laravel 5.4

laravel artisan 命令列表

Laravel 5.4 POST 到 API 重定向 302 而不是返回验证错误

Laravel 5.4方法不允许补丁