【问题标题】:Case insensitive filtering in JSON:APIJSON:API 中不区分大小写的过滤
【发布时间】:2020-12-05 06:05:16
【问题描述】:

我正在尝试对 json:api 端点执行过滤器。 如果 db 中的名称正好是 test name?filter[name]=test name 可以正常工作。但是如果名称是Test name,tEst name 或任何其他可能的组合,我希望服务器返回值。我该怎么做?

谢谢。

【问题讨论】:

    标签: json-api jsonapiframework


    【解决方案1】:

    JSON:API 规范没有定义过滤策略:

    JSON:API 与服务器支持的策略无关。 filter 查询参数可以作为任意数量的过滤策略的基础。

    https://jsonapi.org/format/#fetching-filtering

    它包含与您的 URL 设计相匹配的过滤策略建议:

    建议希望支持基于关联过滤资源集合的服务器通过允许将过滤器与关联名称组合的查询参数来实现。

    例如,以下是对与特定帖子关联的所有 cmets 的请求:

    GET /comments?filter[post]=1 HTTP/1.1
    

    https://jsonapi.org/recommendations/#filtering

    但即使是该建议也没有涵盖应该使用什么比较运算符。它也不包括是否应该区分大小写。这取决于具体实现选择的过滤策略。

    请注意,在 URL 中编码比较运算符的策略也是有效的。例如。您可以像这样在查询参数中对比较运算符进行编码:

    GET /companies?filter[name][equalsCaseInsensitive]=test%20name

    GET /companies?filter[name][equalsCaseSensitive]=test%20name

    GET /companies?filter[sales][greaterThan]=100000

    【讨论】:

      猜你喜欢
      • 2013-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-10
      • 1970-01-01
      • 2013-10-24
      相关资源
      最近更新 更多