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 的刷新路由问题