代码之家  ›  专栏  ›  技术社区  ›  Koen

API筛选器查询不返回带有特殊字符的值

  •  1
  • Koen  · 技术社区  · 8 年前

    当尝试访问serviceM8 API以搜索客户时,我使用的是以下API请求。端点可以工作,但我不确定如何处理特殊字符,如“or&”;。

    API文档: https://developer.servicem8.com/docs/filtering

    因此,如果我称之为:

    https://api.servicem8.com/api_1.0/company.json?%24filter=name%20eq%20"BENTON%"
    

    然后我得到以下结果(3个结果,包括带有特殊字符的结果)。

    [
    {
        "uuid": "60791e9a-8c5a-4e2a-aca5-f9625bef7d8b",
        "edit_date": "2018-06-20 15:13:53",
        "name": "BENTON'S TEST",
    },
    {
        "uuid": "f722b374-e330-42f1-a09e-333b375af1ab",
        "edit_date": "2018-07-05 09:46:30",
        "name": "Benton's test",
    },
    {
        "uuid": "df01f8ce-a1c9-438b-8954-297b113689ab",
        "edit_date": "2018-07-05 17:02:43",
        "name": "BENTONS TEST",
    }
    

    ]

    我想尝试过滤的是BENTON的测试,所以我尝试了以下方法,但这不起作用。

    https://api.servicem8.com/api_1.0/company.json?%24filter=name%20eq%20"BENTON'S%"
    
    {
    "uuid": "df01f8ce-a1c9-438b-8954-297b113689ab",
    "edit_date": "2018-07-05 17:02:43",
    "name": "BENTONS TEST",
    }
    

    我现在的问题是,如何在这个API中进行过滤,以便搜索这些特殊字符?就像BENTON的一样。如果我用%27替换“不改变结果的”符号,因为过滤器中的%符号似乎被用作搜索参数?

    使现代化

    读到这里: https://community.dynamics.com/crm/b/mscrmshop/archive/2015/12/21/crm-odata-rest-queries-and-special-characters

    我假设%27不被识别,我应该使用两个单引号,但这也不起作用。如果我在前端应用程序中搜索,搜索“不起作用,但当我使用\”时,我可以搜索正确的名称。但是在我的查询字符串中使用它是行不通的。

    1 回复  |  直到 8 年前
        1
  •  0
  •   Prachi Mishra    8 年前

    请使用 &$filter=substringof("BENTON'S",name) 而不是 &$filter=name eq "BENTON'S" 。这将返回包含Benton的所有名称。

    否则你也可以使用 &$filter=startswith("BENTON'S",name)

    推荐文章