Проблема в том, что если я все фильтры пишу в параметрах GET запроса, то я быстро достигаю ограничения сервера на длину допустимого url.
Например, следующий url уже дает ошибку:
http://****.***.**.***/Apteka/odata/standard.odata/InformationRegister_Штрихкоды?$format=application/json;odata=nometadata&$inlinecount=allpages&$filter=(Владелец eq cast (guid'c24c93de-85ed-11e9-9bec-e0d55e5ecc06', 'Catalog_Номенклатура') and startswith(Штрихкод, '2') eq false) or (Владелец eq cast (guid'd2a07a96-85ed-11e9-9bec-e0d55e5ecc06', 'Catalog_Номенклатура') and startswith(Штрихкод, '2') eq false) or (Владелец eq cast (guid'd2a07aba-85ed-11e9-9bec-e0d55e5ecc06', 'Catalog_Номенклатура') and startswith(Штрихкод, '2') eq false) or (Владелец eq cast (guid'fc040b35-85ee-11e9-9bec-e0d55e5ecc06', 'Catalog_Номенклатура') and startswith(Штрихкод, '2') eq false) or (Владелец eq cast (guid'0d1266f9-85ef-11e9-9bec-e0d55e5ecc06', 'Catalog_Номенклатура') and startswith(Штрихкод, '2') eq false) or (Владелец eq cast (guid'544252c2-85ef-11e9-9bec-e0d55e5ecc06', 'Catalog_Номенклатура') and startswith(Штрихкод, '2') eq false) or (Владелец eq cast (guid'712c01bd-85f0-11e9-9bec-e0d55e5ecc06', 'Catalog_Номенклатура') and startswith(Штрихкод, '2') eq false) or (Владелец eq cast (guid'ae3edb53-85f0-11e9-9bec-e0d55e5ecc06', 'Catalog_Номенклатура') and startswith(Штрихкод, '2') eq false) or (Владелец eq cast (guid'd4e6f874-85f0-11e9-9bec-e0d55e5ecc06', 'Catalog_Номенклатура') and startswith(Штрихкод, '2') eq false) or (Владелец eq cast (guid'19af4968-85f1-11e9-9bec-e0d55e5ecc06', 'Catalog_Номенклатура') and startswith(Штрихкод, '2') eq false) or (Владелец eq cast (guid'2ea4169a-85f1-11e9-9bec-e0d55e5ecc06', 'Catalog_Номенклатура') and startswith(Штрихкод, '2') eq false) or (Владелец eq cast (guid'3dbe0cc3-85f1-11e9-9bec-e0d55e5ecc06', 'Catalog_Номенклатура') and startswith(Штрихкод, '2') eq false) or (Владелец eq cast (guid'43cc5e47-85f1-11e9-9bec-e0d55e5ecc06', 'Catalog_Номенклатура') and startswith(Штрихкод, '2') eq false) or (Владелец eq cast (guid'4a29c275-85f1-11e9-9bec-e0d55e5ecc06', 'Catalog_Номенклатура') and startswith(Штрихкод, '2') eq false) or (Владелец eq cast (guid'761b0380-85f1-11e9-9bec-e0d55e5ecc06', 'Catalog_Номенклатура') and startswith(Штрихкод, '2') eq false) or (Владелец eq cast (guid'7c2b4576-85f1-11e9-9bec-e0d55e5ecc06', 'Catalog_Номенклатура') and startswith(Штрихкод, '2') eq false) or (Владелец eq cast (guid'88311d73-85f1-11e9-9bec-e0d55e5ecc06', 'Catalog_Номенклатура') and startswith(Штрихкод, '2') eq false) or (Владелец eq cast (guid'9147ee2a-85f1-11e9-9bec-e0d55e5ecc06', 'Catalog_Номенклатура') and startswith(Штрихкод, '2') eq false) or (Владелец eq cast (guid'9147ee2d-85f1-11e9-9bec-e0d55e5ecc06', 'Catalog_Номенклатура') and startswith(Штрихкод, '2') eq false) or (Владелец eq cast (guid'9147ee75-85f1-11e9-9bec-e0d55e5ecc06', 'Catalog_Номенклатура') and startswith(Штрихкод, '2') eq false) or (Владелец eq cast (guid'a8bd5c80-85f1-11e9-9bec-e0d55e5ecc06', 'Catalog_Номенклатура') and startswith(Штрихкод, '2') eq false) or (Владелец eq cast (guid'd5cd8aa1-85f1-11e9-9bec-e0d55e5ecc06', 'Catalog_Номенклатура') and startswith(Штрихкод, '2') eq false) or (Владелец eq cast (guid'dce45946-85f1-11e9-9bec-e0d55e5ecc06', 'Catalog_Номенклатура') and startswith(Штрихкод, '2') eq false) or (Владелец eq cast (guid'dce45947-85f1-11e9-9bec-e0d55e5ecc06', 'Catalog_Номенклатура') and startswith(Штрихкод, '2') eq false) or (Владелец eq cast (guid'dce45964-85f1-11e9-9bec-e0d55e5ecc06', 'Catalog_Номенклатура') and startswith(Штрихкод, '2') eq false) or (Владелец eq cast (guid'dce459ad-85f1-11e9-9bec-e0d55e5ecc06', 'Catalog_Номенклатура') and startswith(Штрихкод, '2') eq false) or (Владелец eq cast (guid'5dab4c0d-85f2-11e9-9bec-e0d55e5ecc06', 'Catalog_Номенклатура') and startswith(Штрихкод, '2') eq false) or (Владелец eq cast (guid'6ab1a7ac-85f2-11e9-9bec-e0d55e5ecc06', 'Catalog_Номенклатура') and startswith(Штрихкод, '2') eq false) or (Владелец eq cast (guid'b2cfb7b9-85f2-11e9-9bec-e0d55e5ecc06', 'Catalog_Номенклатура') and startswith(Штрихкод, '2') eq false) or (Владелец eq cast (guid'b967d095-85f2-11e9-9bec-e0d55e5ecc06', 'Catalog_Номенклатура') and startswith(Штрихкод, '2') eq false) or (Владелец eq cast (guid'8a9cd9b7-0545-11eb-9c3a-1c1b0de11bc6', 'Catalog_Номенклатура') and startswith(Штрихкод, '2') eq false) or (Владелец eq cast (guid'fa86a827-817b-11eb-9c58-1c1b0de11bc6', 'Catalog_Номенклатура') and startswith(Штрихкод, '2') eq false) or (Владелец eq cast (guid'f124463e-88bb-11eb-9c58-1c1b0de11bc6', 'Catalog_Номенклатура') and startswith(Штрихкод, '2') eq false)ndard.odata/InformationRegister_Штрихкоды?$format=application/json;odata=nometadata&$inlinecount=allpages&$filter=(Владелец eq cast (guid'4d0fc853-85ef-11e9-9bec-e0d55e5ecc06', 'Catalog_Номенклатура') and startswith(Штрихкод, '2') eq false) or (Владелец eq cast (guid'19af49db-85f1-11e9-9bec-e0d55e5ecc06', 'Catalog_Номенклатура') and startswith(Штрихкод, '2') eq false)
Ошибка такая:
The requested URL's length exceeds the capacity
limit for this server.
На коротких url-ах с меньшим количеством фильтров, ответ сервера нормальный, данные отдает. Соответственно возникает вопрос, можно ли использовать параметры фильтров в теле POST запроса. В документации про это ни слова.. Делаю попытки накидать запросы в POSTMAN, пока безуспешно.
На коротких url-ах с меньшим количеством фильтров, ответ сервера нормальный
А нафига Вы каждый раз проверяете, что ШК не начинается с "2"? Это уже помогло бы сэкономить кучу символов в строке. Ну и разбить запрос на несколько частей, опытным путем подобрав длину (1024 символа проходят?) ибо эти части совершенно независимы. Получайте по 10 ШК за раз - чем плохое решение?
(9) в обсчем, есть мнение, что POST - это создание нового ресурса. Так что получить - только GET, поэтому придется получать порциями. Ну и убрать проверку на "2", оставив одну (в начале, например).