【问题标题】:RESTful APIs using Laravel使用 Laravel 的 RESTful API
【发布时间】:2018-08-22 15:29:31
【问题描述】:

我正在使用 Laravel 为我的项目开发 REST API。对于每个请求,我都会触发数据库请求以查看请求的 api_token 是否存在。如果不是,我会给出一个 json 响应,上面写着“未经授权的访问”。

if( count($user) == 0 ) {

    $toSend['success'] = 0;
    $toSend['response'] = 'Unauthorized access';
}

但是,还有另一种方法可以做到这一点。如果我只是用 auth:api 中间件包装路由,

Route::post('/address', 'SomeController@someMethod')->middleware('auth:api');

它做同样的事情而不必发出数据库请求。我应该只使用中间件进程还是两者都做?哪个是好的做法?

【问题讨论】:

  • 使用中间件进程

标签: php laravel api


【解决方案1】:

始终使用中间件,并在 API 组列表中提及 API 列表,如下所示

Route::group(['middleware' => 'auth:api'], function () {
   Route::get('getUser','Testcontroller@getData');
});

【讨论】:

  • ok..所以我应该在 getData 方法中定义逻辑吗?还有一个问题。如果逻辑以某种方式失败,那么我该如何处理任何类型的异常??
  • getUser => API 只是一个示例 API,我编写它是为了了解组中间件是如何工作的。 'auth:api' 应该包含逻辑。尝试 { $user = JWTAuth::toUser(JWTAuth::getToken()); } catch (Exception $e) { if ($e instanceof \Tymon\JWTAuth\Exceptions\TokenExpiredException){ return response()->error('Session is Expired', 401); }else{ 返回 response()->error($e->getMessage(), 200); } }
  • 我知道这只是一个例子,但我的问题是如何在构建休息 api 时处理异常。如果发现异常,我希望我的 android 应用程序弹出一个警告框。有什么建议吗?
  • 响应其他响应代码以及消息并显示在 android 应用程序中。例如)$msg = '找不到服务器。';返回响应()->错误($msg);
  • 好的。你推荐任何 laravel 插件来处理异常??
猜你喜欢
  • 2017-12-10
  • 2016-11-27
  • 2015-06-13
  • 2017-11-15
  • 2019-03-08
  • 1970-01-01
  • 2015-11-05
  • 2020-04-28
  • 1970-01-01
相关资源
最近更新 更多