1. Куча / Говнокод #20151

    +3

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    <name>customer_language_iso</name>
                          <value>
                            <string>en</string>
                          </value>
                        </member>
                      </struct>
                    </value>
                  </data>
                </array>
              </value>
            </data>
          </array>
        </value>
      </param>
    </params>

    За 7 лет в туризме ни разу не видел человеческого api.
    Страшнющие нечитабельные SOAP, фантастическая вложенность, json внутри xml, время ответа доходит до нескольких минут и прочее, прочее.

    Запостил: tablecell, 07 Июня 2016

    Комментарии (13) RSS

    • а XML в кубе слабо?) приходит SOAP респонз, внутри которого XML, а внутри некоторых нод XML ещё XML)) но отвечает быстро)))
      Ответить
    • а нахуй SOAP трогать руками вообще? из него клиентов надо генерировать
      Ответить
      • безотносительно этого - если апи разрабатывал мудак, то и клиент у тебя сгенерится с мудацкими классами, енумами и названиями методов

        недавно мне доводилось поработать с xml-выгрузкой из системы федерального масштаба, там был какой-то надмозг, который придумал транслитерировать половину атрибутов, да ещё и коряво (такие фантазёры, например, иногда, но не везде, русская X заменяется на x (икс), русская Р на p, а русская Ш на w, ну или "Kpy" - это сука "карточка персонального учета"), а половина, хоть и с английскими корнями, но вся в разных стилях

        а в другом месте той же xsd выгрузки классификаторы перечислены сука "А", "Б6", "В", "Г", "ЧЖ", "ЖО", "ЖОБ"

        просто удовольствие получил
        Ответить
        • ))согласен, есть такое.

          Однако же SOAP на голову выше всяких RESTов, особенно для ЯП со статической типизацией.

          Никогда не видели как дурачок кричит "SOAP это оверкилл, XML это говно, вот вам модный REST", а потом вручную документирует 150 методов, а потом с другой стороны такой же дурачок вручную пишет прокси на эти 150 методов, а потом половина из них не работает потому что "забыли обновить документацию".
          Ответить
          • Никогда не видели как дурачок кричит " SOAP на голову выше всяких RESTов, REST это говно, тупизация, кококо", а потом БЛЯТЬ делает методы возвращающие строки с JSON в котором значения - куски xml/htmlя.


            Спрашиваешь: а нахуя????77
            - Дык для тонких клиентов жы.
            Ответить
      • Как написали выше, валидный SOAP попадается исключительно в международных компаниях c огромными revenue, вроде https://en.wikipedia.org/wiki/Amadeus_IT_Group
        Но даже у них бардачилово с версиям / соответсвием документации.
        У меня даже была конспирологическая версия искусственного завышения порога вхождения, чтобы отсечь проблемных в перспективе выпердышей-стартаперов.
        Ответить
        • Валидный SOAP попадается там, где вместо пишуших его руками олигофренов, работают программисты, умеющие джава или C# интерфейс экспортировать интерфейс в WSDL. Благо, тулзов для этого миллион (в студию даже встроены!).

          К сожалению, такие компании встречаются редко
          Ответить
          • >умеющие джава или C# интерфейс экспортировать интерфейс в WSDL.

            А потом кто-то в классе что-то меняет (поле добавляет или расширяет) и у всех всё ломается, если не обновить стабы.

            То ли дело REST, где расширение ответа практически никогда ничего не сломает.
            Ответить
            • > у всех всё ломается
              нет, если добавлять поле необязательным

              с той же вероятностью можно и в ресте "исправить" сервер так, что тот перестанет принимать старый объект, т.к. в нем начнет не хватать обязательных для модели атрибутов
              Ответить
            • программирование вообще сложная штука
              бывало поменяешь интерфейс (удалишь функцию, скажем) и все клиенты ломаются!
              Ответить
    • конец курильщика™
      Ответить
    • Вспоминается анекдот, как китайские хакеры выкрали последний мегабайт управляющего кода баллистических ракет, написанного на лиспе.
      Ответить
      • В таком стиле можно писать не только на Лиспе:
        procedure TTVDemo.InitMenuBar;
        var
          R: TRect;
        begin
          GetExtent(R);
          R.B.Y := R.A.Y+1;
          MenuBar := New(PMenuBar, Init(R, NewMenu(
            NewSubMenu('~'#240'~', hcSystem, NewMenu(
              NewItem('~A~bout', '', kbNoKey, cmAbout, hcSAbout,
              NewLine(
              NewItem('~P~uzzle', '', kbNoKey, cmPuzzle, hcSPuzzle,
              NewItem('Ca~l~endar', '', kbNoKey, cmCalendar, hcSCalendar,
              NewItem('Ascii ~t~able', '', kbNoKey, cmAsciiTab, hcSAsciiTable,
              NewItem('~C~alculator', '', kbNoKey, cmCalculator, hcCalculator, nil))))))),
            NewSubMenu('~F~ile', hcFile, NewMenu(
              NewItem('~O~pen...', 'F3', kbF3, cmFileOpen, hcFOpen,
              NewItem('~C~hange dir...', '', kbNoKey, cmChangeDir, hcFChangeDir,
              NewLine(
              NewItem('~D~OS shell', '', kbNoKey, cmDosShell, hcFDosShell,
              NewItem('E~x~it', 'Alt-X', kbAltX, cmQuit, hcFExit, nil)))))),
            NewSubMenu('~W~indows', hcWindows, NewMenu(
              NewItem('~R~esize/move','Ctrl-F5', kbCtrlF5, cmResize, hcWSizeMove,
              NewItem('~Z~oom', 'F5', kbF5, cmZoom, hcWZoom,
              NewItem('~N~ext', 'F6', kbF6, cmNext, hcWNext,
              NewItem('~C~lose', 'Alt-F3', kbAltF3, cmClose, hcWClose,
              NewItem('~T~ile', '', kbNoKey, cmTile, hcWTile,
              NewItem('C~a~scade', '', kbNoKey, cmCascade, hcWCascade, nil))))))),
            NewSubMenu('~O~ptions', hcOptions, NewMenu(
              NewItem('~M~ouse...', '', kbNoKey, cmMouse, hcOMouse,
              NewItem('~C~olors...', '', kbNoKey, cmColors, hcOColors,
              NewLine(
              NewItem('~S~ave desktop', '', kbNoKey, cmSaveDesktop, hcOSaveDesktop,
              NewItem('~R~etrieve desktop', '', kbNoKey, cmRetrieveDesktop, hcORestoreDesktop, nil)))))), nil)))))));
        end;
        Ответить

    Добавить комментарий