繁体   English   中英

具有查询参数的Laravel REST API

[英]Laravel REST API with query parameters

因此,我已经启动并运行了API的一部分,但仍停留在某些方面。 我正在使用Laravel的REST控制器,并且喜欢使用诸如Response::eloquent($query);方法的能力Response::eloquent($query); 但是,使用此方法:

  1. 如果我获取的资源正在连接多个表,我应该如何处理查询参数(例如id = 27&order_by = timestamp)?
  2. 我应该从数据库中获取值,然后构造一个仅包含要显示用于API访问的某些字段的数组吗? 然后如何使用查询参数?

首先,我建议您观看“ 教狗到REST [链接断开]”,以获取有关格式化REST路由的更多信息。

至于您的问题:

  1. 您可以通过laravel input&cookies docs中提到的Input::get() and Input::all()方法处理输入字段。 您可能还需要使用laravel的Validator类来验证传入的数据。
  2. 假设您如示例中所述从输入中获取了id和order_by字段:

    $id = Input::get('id'); $order_criteria = Input::get('order_by');

使用Fluent Query Builder

DB::table('dbtable')->where('id', '=', $id)->order_by($order_criteria, 'desc')->first();

//使用first(),因为我们非常确定只能得到一个结果,对于可能返回更多结果的不同标准,您可能想使用-> get()。

我为此发布了一个程序包。

您可以查看此https://github.com/selahattinunlu/laravel-api-query-builder

对于Wiki页面: https : //github.com/selahattinunlu/laravel-api-query-builder/wiki

该程序包使用url参数创建查询。

例:

/ api / users?name = se *&age!= 18&order_by = age,asc&limit = 2&columns = name,age,city_id&includes = city

和结果查询

Users::with(['city'])->select(['name', 'age', 'city_id'])
                     ->where('age', '!=', 18)
                     ->where('name', 'like', 'se%')
                     ->orderBy('age', 'asc')
                     ->take(2)

用法:

$queryBuilder = new QueryBuilder(new User, $request);

return response->json([
  'data' => $queryBuilder->build()->paginate(),
  .
  .
]);

就这样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM