|
REST в Ансамбле - че так сложно?
|
|||
---|---|---|---|
#18+
Каше 2017.2.1. Пытаюсь сделать http запрос к другому серверу, нужно json-объект отправить в теле запроса, запрос должен иметь Content-Type=application/json, простейшая задача. Пытаюсь использовать операцию с EnsLib.HTTP.OutboundAdapter, и все превращается в BDSM. Нужно создать объект типа "поток", да еще не какой-нибудь, а такой, который имеет атрибуты, а их по разным пакетам распихан миллион, присвоить в этом потоке атрибут CONTENT-TYPE Код: sql 1.
и отправит данные Код: sql 1.
До того, что нужно установить атрибут - еще поди догадайся (мне пришлось смотреть исходники класса), вызов отправки тоже происходит неестественным образом. Ну ладно, наверное, я дурак, и нужно использовать специально приспособленный класс EnsLib.REST.Operation, как это рекомендует документация. Смотрим, чем от отличается от Ens.BusinessOperation - дополнительно наследуется от Ens.Util.JSON, а там есть методы типа JSONStreamToObject. Наверное, он сразу сделает нам сразу нужный нам поток? А вот нифига. Мало того, что поток там без атрибутов, так он еще не понимает объекты типа %DynamicObject, потому что использует старый механизм %ZEN.Auxiliary.jsonProvider. Еще есть EnsLib.REST.GenericOperation, но я ним я связываться не стал, хотя бы потому, что у него нет исходников и непонятно, что он делает. Нет, я понимаю, с этим всем можно разобраться и у меня вроде бы получилось, но зачем, если через %Net.HttpRequest все делается гораздо проще и интуитивно понятнее? Я не верю, что все так деревянно, REST же не какая-то специфическая штука, сейчас половина сервисов на нем сделано, а Ансамбль - автоматизация более высокого уровня, чем разработка через %NetHttpRequest. Скажите, как вы делаете, может, я чего-то элементарного не понимаю? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2018, 19:49 |
|
REST в Ансамбле - че так сложно?
|
|||
---|---|---|---|
#18+
Блок А.Н., была такая же проблема решал через кастомный адаптер . ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2018, 22:48 |
|
REST в Ансамбле - че так сложно?
|
|||
---|---|---|---|
#18+
Как пример написания адаптера к большому REST API могу предложить технологию Managed File Transfer которая предлагает доступ к облачным дискам Box, Kiteworks и DropBox. В частности я дописал к ней адаптер для Яндекс.Диска . В MFT предлагается следующая архитектура решения - потребителя REST API: Адаптер разделяется на 2 класса: один делает http запросы и возвращает объекты, второй организует бизнес-логику Все запросы отправляются одним методом, аргкменты которого - переменные в данном API, за счёт чего достигается унифицированность ответа Класс бизнес-логики занят обработкой объекта-ответа ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2018, 22:58 |
|
REST в Ансамбле - че так сложно?
|
|||
---|---|---|---|
#18+
Блок А.Н., а не проще сделать шлюзик для внешних json-запросов. У меня такой есть на php. Код простой, типа: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Засылаем в него постом наш JSON - и забираем ответ. Плюс (м.б. и сомнительный) - шлюзик может лежать на амазоне и если нас решили забанить, то это ненадолго ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 02:47 |
|
REST в Ансамбле - че так сложно?
|
|||
---|---|---|---|
#18+
Мне кажется, такой базовый функционал должен все-таки делаться на уровне стандартных библиотек, и без таких вот неочевидных действий. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2018, 17:57 |
|
REST в Ансамбле - че так сложно?
|
|||
---|---|---|---|
#18+
Блок А.Н., Как Вам эта статья https://habr.com/ru/post/265845/ и что думает Intersystems по этому поводу ? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2019, 16:35 |
|
REST в Ансамбле - че так сложно?
|
|||
---|---|---|---|
#18+
kalinБлок А.Н., Как Вам эта статья https://habr.com/ru/post/265845/ и что думает Intersystems по этому поводу ?Статья совершенно ни о чем. И думать InterSystems там не над чем. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2019, 17:17 |
|
REST в Ансамбле - че так сложно?
|
|||
---|---|---|---|
#18+
kalin, Мне restful с его ресурсами, статусами и CRUD не близок. Мне ближе спихнуть кучу данных пост-запросом в JSON и получить кучу данных в ответ. А Интерсистемс, действительно, думать не о чем. Есть технология - они ее поддерживают. И уже дело наше, как ее использовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2019, 19:14 |
|
REST в Ансамбле - че так сложно?
|
|||
---|---|---|---|
#18+
Блок А.Н. Мне ближе спихнуть кучу данных пост-запросом в JSON и получить кучу данных в ответ И где-то там, в класс-методе обработки ( впрочем, и на клиенте тоже ) "красиво" роутить вызовы других методов в зависимости от свойств прилетевшей кучи. Но понимаю, да. Сам так делал ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2019, 12:45 |
|
REST в Ансамбле - че так сложно?
|
|||
---|---|---|---|
#18+
doublefint, А че их роутить? На каждый метод свой класс. Просто аргументом этого метода приходит не простой параметр, а дерево объектов json. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2019, 18:54 |
|
REST в Ансамбле - че так сложно?
|
|||
---|---|---|---|
#18+
doublefint, Я имею в виду, что в restful же например для работы, например, с заявкой, будут разные методы типа PUT /order - создать заявку POST /order/NNN - редактировать заявку NNN GET /order/NNN - получить заявку Мне проще использовать GET /getorder?id=NNN POST /saveorder Потому что в моей практике не всегда операции к CRUD сводятся, там может быть каша всяких действий. Так зачем загонять себя в в эту идеологию ради идеологии? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2019, 19:01 |
|
REST в Ансамбле - че так сложно?
|
|||
---|---|---|---|
#18+
Блок А.Н. там может быть каша всяких действий Вот этого, собственно, и рекомендуют избегать - K.I.S.S Блок А.Н.Мне проще использовать GET / get order?id=NNN Проще, чем GET /order/NNN ? Блок А.Н. Так зачем загонять себя в в эту идеологию ради идеологии? Одним из недостатков считается отсутствие четкого стандарта ( например, PUT vs POST ). Зачем загоняться, можно придерживаться в нужной вам мере ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2019, 23:04 |
|
REST в Ансамбле - че так сложно?
|
|||
---|---|---|---|
#18+
doublefint, Каша из действий все равно где-то будет. Либо на клиенте, либо на сервере. И мне намного проще делать это на сервере. Так что я действительно стараюсь сделать проще - спихиваю данные на сервер :-) >Проще, чем GET /order/NNN ? В случае getorder не проще. А в случае makeхрензнаетчто просто адекватный путь придумать не получается. А названия пути - это как название метода, уже привычно. >Одним из недостатков считается отсутствие четкого стандарта ( например, PUT vs POST ) А у RESTFUL есть стандарт? И что он дает? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2019, 23:09 |
|
REST в Ансамбле - че так сложно?
|
|||
---|---|---|---|
#18+
Блок А.Н. Каша из действий все равно где-то будет. Либо на клиенте, либо на сервере. Так тренд на то, как я понимаю, чтобы делать это на клиенте. Мол, клиентов много и разных, на всех процессоров не найти, а клиенты пока ответа ждут - ничем не заняты. А так сервер предоставляет узкоспециализированный сервис, делает что-то одно, но быстро - см. микросервисы vs монолит > А в случае makeхрензнаетчто просто адекватный путь придумать не получается Ну make сделает на сервере что-то новое, значит уже POST /whateveryouwant, а дальше надо разбираться в разновидностях ХЗЧ из вашей предметной области > А у RESTFUL есть стандарт? "Одним из недостатков считается отсутствие четкого стандарта " И как следствие - практически невозможно автоматически сгенерировать клиент для выставленного REST API ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2019, 00:59 |
|
|
start [/forum/topic.php?fid=39&fpage=4&tid=1556209]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 135ms |
0 / 0 |