|
Как нужно возвращать структуру веб-сервисом? | ☑ | ||||||
---|---|---|---|---|---|---|---|---|
0
vi0
22.02.17
✎
12:50
|
Создаем веб-сервис с пакетом http://v8.1c.ru/8.1/data/core.
В операции у возвращаемого значения тип указываем Structure. Фактически в операции возвращаем значение СериализаторXDTO.ЗаписатьXDTO(Новый Массив). И все проходит без ошибок. Почему так? Это корректное поведение? Как нужно организовывать веб-сервис, чтобы возвращать тот или иной тип? |
|||||||
1
Fragster
гуру
22.02.17
✎
12:51
|
ошибка будет на вызывающей стороне (если это 1с)
|
|||||||
2
vi0
22.02.17
✎
12:51
|
не будет, я проверял
|
|||||||
3
DrShad
22.02.17
✎
12:53
|
вызывающая сторона кто?
|
|||||||
4
vi0
22.02.17
✎
12:53
|
1с
|
|||||||
5
Fragster
гуру
22.02.17
✎
12:54
|
результат = Прокси.Метод
и результат прям массив? |
|||||||
6
vi0
22.02.17
✎
12:57
|
результат типа ОбъектXDTO
после выполнения СериализаторXDTO.ПрочитатьXDTO(ОбъектXDTO1) получается массив платформа 8.3.9.1850 |
|||||||
7
Fragster
гуру
22.02.17
✎
12:58
|
демонически обновлял?
|
|||||||
8
Fragster
гуру
22.02.17
✎
12:58
|
был он когда-то массивом?
|
|||||||
9
vi0
22.02.17
✎
13:01
|
да, нет
чистую базу создал могу прикрепить сюда |
|||||||
10
Fragster
гуру
22.02.17
✎
13:04
|
прикрепи к письму в техподдержку 1с. у нас тут только психологическая поддержка.
|
|||||||
11
vi0
22.02.17
✎
13:04
|
скажу больше, любое сериализованное значение проходит
проверял число, дату, структуру, массич |
|||||||
12
vi0
22.02.17
✎
13:04
|
я напишу в 1с, да
интересно и тут перетереть |
|||||||
13
DrShad
22.02.17
✎
13:06
|
(12) веб сервисами пользуюсь, но никогда не заморачивался с типами - мне тупо нужен был всегда JSON массив, а с ним проблем нет он тупо передается как строка
|
|||||||
14
vi0
22.02.17
✎
13:07
|
(13) почему именно JSON массив?
|
|||||||
15
DrShad
22.02.17
✎
13:08
|
(14) с ним легко работать
|
|||||||
16
Fragster
гуру
22.02.17
✎
13:08
|
(14) потому что кое-кто путает http и web сервисы
|
|||||||
17
DrShad
22.02.17
✎
13:09
|
(16) нифига я не путаю
|
|||||||
18
Fragster
гуру
22.02.17
✎
13:09
|
(15) в веб сервисах хорошо, что структура данных прибивается гвоздями. в этом плане я не одобряю (0), кстати
|
|||||||
19
vi0
22.02.17
✎
13:10
|
(15) чем именно JSON легче чем xml сериализация?
|
|||||||
20
vi0
22.02.17
✎
13:10
|
(18) ээ.. не одобряешь что именно?
|
|||||||
21
DrShad
22.02.17
✎
13:11
|
||||||||
22
Fragster
гуру
22.02.17
✎
13:11
|
(17) а нафига? я понимаю, когда из жабаскрипта вызываешь - там json актуален, и хттп сервисы проще, но в вебсервисах-то зачем?
|
|||||||
23
Fragster
гуру
22.02.17
✎
13:11
|
(21) это хттп сервис
|
|||||||
24
DrShad
22.02.17
✎
13:12
|
(19) мне на стороне сайта с ним легче работать, а объяснять долго
|
|||||||
25
DrShad
22.02.17
✎
13:12
|
(23) это веб-сервис
спорим? |
|||||||
26
Fragster
гуру
22.02.17
✎
13:13
|
(25) ты вызываешь php, как ты в пхп крутишь данные - мне неизвестно. объекты XDTO на стороне php преобразуются в объекты php, при указании класса - еще и с методами. то, что ты делаешь - можно сделать и без лишней прослойки из php.
|
|||||||
27
Fragster
гуру
22.02.17
✎
13:14
|
только http сервисами
|
|||||||
28
DrShad
22.02.17
✎
13:15
|
(26) можно, но сделано как сделано, увы
|
|||||||
29
DrShad
22.02.17
✎
13:17
|
да и вызывается не php как таковой, а юзается его SOAP-Client
|
|||||||
30
Fragster
гуру
22.02.17
✎
13:17
|
более того, эти самые объекты XDTO после преобразования в объекты php, потом замечательно сериализуются средствами php при необходимости, а на стороне php мы работаем с объектами без лишних телодвижений
|
|||||||
31
Fragster
гуру
22.02.17
✎
13:18
|
(29) как раз из-за того, что в js нету своего соап клиента. так вот, без прослойки это можно сделать на http сервисах 1с и будет работать быстрее (и сам вызов http сервиса и отсутствие прослойки)
|
|||||||
32
DrShad
22.02.17
✎
13:19
|
(31) совет давно понятен, но работает - не трожь
со временем перепишем |
|||||||
33
Fragster
гуру
22.02.17
✎
13:22
|
(32) ну так не надо свои костыли выдавать за правильную архитектуру
|
|||||||
34
DrShad
22.02.17
✎
13:23
|
(33) а где я претендовал на правильность?
|
|||||||
35
Fragster
гуру
22.02.17
✎
13:23
|
(34) в (13)
|
|||||||
36
DrShad
22.02.17
✎
13:24
|
(35) может еще раз перечитать (13)?
|
|||||||
37
Fragster
гуру
22.02.17
✎
13:26
|
(20) при формировании своего пакета (xsd схемы) мы прибиваем гвоздями структуру данных, при использовании Массива, json и прочего - мы "договариваемся" о структуре данных.
и тогда получается, что при расширении структуры начальная документация, даже если и была - становится не актуальной, а на актуализацию все забивают. А в случае жесткой схемы - мы вынуждены её модифицировать, получая самодокументируемость. |
|||||||
38
Fragster
гуру
22.02.17
✎
13:27
|
(37)+ конечно, неполную, но лучше, чем ничего
|
|||||||
39
Fragster
гуру
22.02.17
✎
13:27
|
(36) я прочитал (13) как "забей на схемы, используй строку с json"
|
|||||||
40
DrShad
22.02.17
✎
13:35
|
(39) ну так это же не мои проблемы )))
|
|||||||
41
vi0
22.02.17
✎
13:36
|
(37) ты имеешь ввиду, что всегда при использовании непримитивных типов нужно делать свой XDTO-пакет в дереве метаданных и его указывать в веб-сервисе?
чтобы клиент мог через фабрику читать xdto-пакеты? |
|||||||
42
Fragster
гуру
22.02.17
✎
13:40
|
(41) что-то типа того. для сервисов, предназначенных для одинаковых конфигураций объекты конфигурации можно юзать из current-config, но всякие структуры - да, прибивать гвоздями в пакете с именами и типами свойств.
|
|||||||
43
vi0
22.02.17
✎
13:41
|
(42) типа того или именно так?
что ты подразумевал под самодокументируемостью? |
|||||||
44
Fragster
гуру
22.02.17
✎
13:44
|
(43) именно так! самодокументируемость - то, что не надо глядеть в код для получения состава передаваемой информации. То, что клиент (в которого загружен пакет) понимает, что что-то на сервере изменилось, и, возможно, надо менять алгоритмы взаимодействия. Ну, по крайней мере, произвести их инспекцию и задать вопросы разработчикам серверной стороны.
|
|||||||
45
vi0
22.02.17
✎
13:53
|
(44) хм.. мне кажется, если подобное происходит, то это недоработки серверной части. недоработки в том смысле, что не оповестили клиента
для этого нужно скорее вводить версионность структуры возвращаемых данных к примеру часть клиентов уже перешла на следующую версию, часть нет, и мы возвращаем разные структуры |
|||||||
46
Fragster
гуру
22.02.17
✎
13:56
|
(45) версионность нужна, да. независимо от того, прибиваем, или нет, гвоздями.
|
|||||||
47
dubraver
22.02.17
✎
14:30
|
У клиента должна быть xsd схема, для десериализации объекта. Если xml пришедший из web- сервиса не проходит проверку схемой, то значит изменилась схема на сервере и необходимо об этом оповестить клиента.
|
|||||||
48
vi0
27.02.17
✎
05:28
|
(47) А не поздно ли оповещать клиента, если xml уже не прошел проверку на клиенте?
|
|||||||
49
vi0
01.03.17
✎
05:17
|
(0) 1с сказала - так и нужно. ошибки нет
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |