Drupal JSON API:如何使用“不同于”进行过滤?
Posted
技术标签:
【中文标题】Drupal JSON API:如何使用“不同于”进行过滤?【英文标题】:Drupal JSON API: how to filter using "different than"? 【发布时间】:2020-09-20 02:54:27 【问题描述】:我正在尝试在 Drupal 8 上编写一个非常简单的 JSON API 查询:返回除 uid 0 和 1 之外的所有用户。 听起来很琐碎,但我无法弄清楚并找到任何示例。
这样的?
jsonapi/user/user?filter[drupal_internal__uid]!=0
欢迎提出任何想法!
【问题讨论】:
【参考方案1】:这样的事情应该可以按你的意愿工作:
/jsonapi/user/user?filter[user-uid][condition][path]=uid&filter[user-uid][condition][operator]=NOT IN&filter[user-uid][condition][value][]=0&filter[user-uid][condition][value][]=1
欲了解更多信息:https://www.drupal.org/node/2943641
编辑:如果您使用 cURL,括号会抛出错误,请在您的请求中添加“--globoff”。
示例:
curl --globoff --location --request GET "localhost/jsonapi/node/article?sort=nid&page[limit]=10&filter[article-title][path]=title&filter[article-title] [value]=headless&filter[article-title][operator]=NOT%20IN"。
参考:https://***.com/a/8333999/5052969
【讨论】:
感谢您的提示!我没有得到的是很多语法不是有效的 URL。因此,如果我使用 curl 或其他方式调用端点,则这些查询不会被接受为正确的 URL。例如,我应该写“NOT%20IN”而不是“NOT IN”吗? (这似乎不起作用) 是的,它有很多语法,我不知道是否有替代方法。关于您的问题,它对我有用: curl --globoff --location --request GET "localhost/jsonapi/node/article?sort=nid&page[limit]=10&filter[article-title][path] =title&filter[article-title][value]=headless&filter[article-title][operator]=NOT%20IN"。问题可能是括号(这就是我使用“--globoff”的原因)链接:***.com/a/8333999/5052969 drupal 文档(和 JSON:API 规范)在对 URL 进行编码之前写入 URL,以提高可读性。在 URL 中使用它们之前,您应该对[
、]
、空格等特殊字符进行编码。如果您不想手动进行编码,可以使用 cURL 中的 --data-urlencode
选项。
是否有来自 json-api 的官方文档讨论过滤除以下内容:jsonapi.org/format/#fetching-filtering。它没有提供任何细节作为 drupal 的文档。以上是关于Drupal JSON API:如何使用“不同于”进行过滤?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Drupal 视图中显示 Web 服务 (SOAP) JSON 结果
如何在 Drupal 7 Search API 模块中将内容实体标记为脏