Запрос фильтра API не возвращает значения со специальными символами - PullRequest
0 голосов
/ 05 июля 2018

При попытке доступа к API serviceM8 для поиска клиентов я использую следующий запрос 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 для замены знака ', который не меняет результат, так как кажется, что знак% в фильтре используется в качестве параметра поиска?

UPDATE

Чтение этого: https://community.dynamics.com/crm/b/mscrmshop/archive/2015/12/21/crm-odata-rest-queries-and-special-characters

Я предполагаю, что% 27 просто не распознан, и я должен использовать две одинарные кавычки, но это тоже не работает. Если я ищу в приложении переднего плана, поиск «не работает, но когда я использую \», я могу искать правильные имена. Но использование этого в моей строке запроса не работает.

1 Ответ

0 голосов
/ 05 июля 2018

Пожалуйста, используйте &$filter=substringof("BENTON'S",name) вместо &$filter=name eq "BENTON'S". Это вернет все имена, которые содержат Бентона.

В противном случае вы также можете использовать &$filter=startswith("BENTON'S",name)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...