用 Laravel 搭建一套 RESTful 风格的 API 时,get 方式的请求到底如何传参才够优雅?

如题。最近打算用 Laravel 搭建一套 restful 风格的 API 服务,由于 restful 风格是通过请求动作来区分操作资源的类型,那么有一个问题一直不能释怀:
大多手册或者博客在介绍 restful 风格时都在举这样的例子:

GET 方式请求资源时,比如 api.xxx.com/users/1

但是我好奇,难道实际情况中获取资源只有少到可怜的一个参数这么简单吗?如果我需要通过 N 个条件去查询资源呢?而且这些条件还可能不是必须的,我该怎么办?比如一个搜索接口。
我是这样:

Route::get('users/{name}/{status}/{rank}/{page}/{pagesize}', 'Controller@users');

还是这样:

Route::get('users/name/{name}/status/{status}/rank/{rank}/{page}/{pagesize}', 'Controller@users');

感觉看起来都不优雅。况且以上两种情况都还是参数必填,我既然要搜索,那当然可以有某个或者某几个参数为空,所以根本无法满足需求。

在此请教大家,这样的情况,应该如何处理会比较舒服?我相信 Laravel 应该有更优雅的方式,遗憾的是我在文档中没有查到。望大家不吝赐教~

代码是写给人看的,顺便给机器运行一下。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
leo
最佳答案

restful 并没有禁止使用 query 参数呀,?rank=xxx&status=xxx

3年前 评论
luci (楼主) 3年前
讨论数量: 4
leo

restful 并没有禁止使用 query 参数呀,?rank=xxx&status=xxx

3年前 评论
luci (楼主) 3年前

稍微看下 RESTful 文档,leo 说的这个文档有写。

3年前 评论
luci (楼主) 3年前
xiaopi

在我的理解中,路由风格(不光是GET请求)是:必要参数放在route参数中,非必要的放在query中 比如 www.xxx.com/category/1/article?page... 这个url中 category参数是必须的,所以放在route中.

3年前 评论
luci (楼主) 3年前
xiaopi (作者) 3年前

推荐 overtrue 大佬的这个骨架。 github.com/overtrue/laravel-skelet...
这个骨架里对 Request 有个很魔性的设计,可以学学。

3年前 评论
luci (楼主) 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!