url - REST/ROA 架构 - 在 URL 中发送数据库搜索/查询/过滤/排序参数? (>、<、IN 等...)

标签 url rest url-routing restlet

我正在使用 ROA(面向资源的架构)为我的应用程序构建一个 REST 接口(interface)。

我想让客户能够在 URL 中指定搜索参数。所以客户可以说“给我所有的人:

  • “first_name”等于“BOB”
  • “年龄”大于“30”
  • 按“姓氏”排序

我在想:

GET /PEOPLE/{query_parameters}/{sort_parameters}

……或许

GET /PEOPLE?query=<query_string>&sort=<sort_string>

...但我不确定哪种语法适合在 COLUMN_NAME-OPERATOR-VALUE 一式三份中指定。我在想也许是这样的:

column_name.operator.value

所以客户可以说:

GET /PEOPLE?query=first_name.EQUALS.bob&query=age.GREATER_THAN.30&sort=last_name.ASCENDING

我真的不想在这里重新发明轮子,是否有一些公认的方法可以做到这一点?我正在使用 ReSTLets,我不知道这是否有所不同。

最佳答案

我会将搜索参数添加为单个参数。专用的子查询语言通常更难处理+阅读(尤其是因为您必须对其进行 url 编码)。所以我不会压缩一个完整功能的 sql 语法。仅添加您真正需要且对搜索有意义的参数,复杂性越低意味着处理越容易 :)

最小/最大的东西我会添加到同一个参数。 /人?年龄=10,20

请注意“,”,它隐含地为您提供了范围语法。我发现它具有 minAge 和 maxAge,因此更具可读性。

对于开放范围,您可以这样做: /人?年龄=10,*

我会做的排序: /people?sortField=name&sortOrder=ascending

关于url - REST/ROA 架构 - 在 URL 中发送数据库搜索/查询/过滤/排序参数? (>、<、IN 等...),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2946683/

相关文章:

url - 如何在 Sass 中使用 @use 谷歌字体 URL?

javascript - 这是无效的 JSON 吗?

php - MySQL 和 PHP 很好,但 Web 服务很慢

api - 如何防止对 RESTful 数据服务的蛮力攻击

WordPress : URL error 404 but the page exists

php - 在 PHP 中获取带有查询字符串的当前 URL 路径

Java - 通过浏览器/URL 连接到 ServerSocket

rest - 将 JAX-RS 应用程序部署到 Tomcat 时出现 IncompatibleClassChangeError

asp.net - ASP.NET URL重写

javascript - 忽略 ASP.net 中的 Javascript、CSS 和图像文件路由