繁体   English   中英

Laravel REST API:将查询字符串参数转换为数据库搜索查询

[英]Laravel REST API: Translating query string parameters into database search queries

我一直在使用Laravel 4和Eloquent为我的移动应用程序编写API。 我已经阅读了一些有关编写优秀API的细节,包括Phil的Build a Decent API和apigee的RESTful API Design

APIgee谈论查询字符串下的复杂性。 从查询字符串获取参数可能很麻烦,因为参数的数量和类型可能不同。 例如,为了得到一个黑色的狗,请求将是

http://url.com/api/dogs?color=black

黑色和年龄的狗会

http://url.com/api/dogs?color=black&age=16

$dogs = new Dog;

if(Input::get('color'))
    $houses->where('color', '=', Input::get('color'));

if(Input::get('age'))
    $houses->where('age', '=', Input::get('age'));
// Keep adding more for every filter you have :-|

$dogs = $dogs->get();

另一种更好的方法是使用DB列名作为参数名称,并使用foreach循环来构造查询。

但是,我想知道是否有这种方法的替代方案 ,或者这是否是处理查询字符串的标准方法。

我想如果您有3-4个参数,那么您可以像上面那样单独检查它们。

但是,如果你有很多参数,那么你可以使用foreach循环,采取预防措施,以避免从隐藏字段(如id)搜索..下面的例子..

$inputs = Input::except('id', 'something_cannot_be_used_for_searching');

    foreach($inputs as $key => $input)
    {
     //Stmts
    }

如果有任何其他问题,请告诉我。 谢谢 :)

暂无
暂无

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

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