API过滤器查询不返回带有特殊字符的值

时间:2018-07-05 07:35:02

标签: rest url servicem8

当尝试访问serviceM8 API来搜索客户时,我正在使用以下API请求。端点可以工作,但是我不确定如何处理'或&之类的特殊字符。

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'S TEST,所以我尝试以下操作,但这不起作用。

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'S。如果我使用%27代替不会改变结果的'符号,因为似乎过滤器中的%符号用作搜索参数?

更新

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

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

1 个答案:

答案 0 :(得分:0)

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

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