О программе Postman для тестирования API и для чего она нужна 1С-нику







Для чего нужна программа Postman для тестирования API и какая от него польза для 1С-программиста.

Postman это бесплатное приложение для создания и тестирования API — запросов.

Для чего необходим Postman 1С-нику:

1) Возможность протестировать работу API при помощи не-1С приложения. Часто при тестировании API не удается подключиться к серверу и возникает вопрос: может быть дело в специфических особенностях 1С? Если вы увидите, что 1С к API серверу не подключается, а Postman с похожими параметрами запроса работает — значит дело в особенностях настройки 1С. Если же и Postman-запрос не работает, то нужно читать документацию на API.

2) Возможность разговаривать с не-1Сными программистами на одном языке. Очень много программистов используют Postman и иногда достаточно просто прислать им скриншот Postman-а с настройками, которые не работают и вам ответят, прислав свой скриншот с настройками Postman, которые работают.

Если же начинаешь описывать 1С-ные параметры подключения к API не-1С программисту, он сразу впадает в ступор и говорит, что в 1С не разбирается и у него все работает.

3) Postman имеет более широкие стандартные настройки запросов API, что может натолкнуть вас на мысль о том, как именно нужно сформировать запрос. Например, можно указать различные варианты настроек содержимого тела запроса, что в 1С никак не описывается, а просто предлагается положить текст тела запроса командой УстановитьТелоИзСтроки().

 

Описание работы с Postman

Postman позволяет создавать коллекции (Группы) запросов и сами запросы и сохранять их. Интерфейс прост и интуитивен:

Начальный интерфейс Postman и первоначальное создание запросов.

Самое интересное в Postman и то, что отличается от 1С — это различные варианты заполнения тела запроса:

Все возможные варианты запроса можно заполнить в 1С, но правила заполнения тела запроса (то, что задается командой ЗапросHTTP.УстановитьТелоИзСтроки()) в 1С не описываются явно и иногда нужно догадываться, в каком формате нужно заполнить тело.

Пример заполнения тела запроса

 

Соответствие настроек 1С И Postman:

Соответствие настроек 1С И Postman

 

Соответствие настроек 1С И Postman

Соответствие настроек 1С И Postman

Соответствие настроек 1С И Postman

 

28 Comments

  1. user774630

    Спасибо за статью.

    Программа помогла разобраться, почему не работала доменная аутентификация с себ-сервисом Axapta.

    помощью Postman собрал http post-запрос к веб-сервису с ntlm аутентификацией. Он работал нормально.

    Аналогичный запрос из 1С не работал.

    В Wireshark сравнил оба запроса, обратил внимание что postman для авторизации пытается использовать NTML, а 1С — Kerberos.

    Помогло удаление Kerberos на веб-сервере из списка провайдеров аутентификации Windows.

    Reply
  2. dalgaso2010

    Хорошая, статья. Спасибо. Тоже начинали с программы Postman и ей аналогичных, но в итоге решили отказаться от графического интерфейса. Когда API начинает расти, то возникает проблема с переносом списка запросов, да и просто с перемещением между запросами. Не говоря уже про возможность автоматизации. В итоге остановились на расширении RestClient (https://marketplace.visualstudio.com/items?itemName=humao.rest-client) для VSCode. Расширение позволяет описывать все запросы в тексте, т.е. достаточно завести отдельный файлик с расширением `.http и описать все необходимые запросы. Например:

    POST /api HTTP/1.1
    Content-Type: application/json
    Authorization: Basic login pass
    
    {
    «id»: «222»,
    «action»: «something»
    }
    

    Показать

    И при просмотре этого файлика в VSCode напротив каждого запроса будет появляться кнопка «Send Request». Можно сразу отправить запрос и увидеть результат. В общем удобно применять и хранить в git. В итоге мы немного пошли дальше и стали формировать на основании таких файликов таски на написание тестов к API.

    Reply
  3. RomanCrow13

    Недавно тоже познакомился с Postman, классная вещь! Понравилась тем, что можешь просмотреть тело запроса в конечном виде.

    До этого работал с Curl. Но он очень автоматизирован, сам подставляет нужные заголовки и так далее.

    Сейчас пытаюсь отправить запрос в телеграм с заголовком Content-type : Multipart form-data, чтобы отправлять файл на сервер и посылать в чат.

    Reply
  4. MORT32Ram

    Тема не раскрыта, стало понятно что прога классная и удобная, а вот как ей пользоваться нет=(

    Reply
  5. user1166203

    А SoapUI уже не торт?

    Reply
  6. budidich

    (5)

    SoapUI

    Понятия не имею, что такое SoapUI. От вас первый раз слышу.

    Если расскажите — будет хорошо.

    Reply
  7. budidich

    (4)

    прога классная и удобная, а вот как ей пользоваться нет=(

    Добавил скриншоты — сопоставление параметров API в 1С и в Postman.

    Reply
  8. user774630

    (6) Это аналогичная программа.

    Что понравилось в SoapUI — удобная работа с SOAP web-сервисами, в т.ч. программа может сама генерировать тестовые запросы на основании wsdl с заполнением обязательных/необязательных полей. Это удобно, если работаешь из 1C с SOAP не с помощью xdto, а через HTTPсоединение и собираешь xml руками.

    Reply
  9. Dorosh

    (5)

    А SoapUI уже не торт?

    Торт, но с горчинкой. Например отказывается понимать русские буквы. Авторизоваться как «Администратор» не выйдет, изволь создать спецом «Administrator».

    Reply
  10. iliabvf

    Спасибо за обзор, есть еще SoapUI и Fiddler.

    Reply
  11. MORT32Ram

    (7) Спасибо!

    Reply
  12. Bizerber

    (5) SoapUI хорош только для SOAP. А если у тебя висит какой то сервис, отдающий по REST API JSONы — лучше постман.

    Reply
  13. Johny_v

    По возможностям очень напоминает расширение для Google Chrome — Advanced Rest Client (ARC). Я давно на него перешел при тестировании веб-сервисов. И ничего ставить отдельно не надо. Всегда в браузере подключено.

    Reply
  14. CodeNull

    (8) SoapUI, это мощное средство предназначенное больше для регрессионного тестирования API. По-моему, для простых случаев и запросов он избыточен.

    Как альтернатива — можно использовать еще и JMeter.

    Reply
  15. CodeNull

    Есть еще и такое: https://chrome.google.com/webstore/detail/restlet-client-rest-api-t/aejoelaoggembcahagimdiliamlcdmfm

    Тоже удобный инструмент, значительно экономит время при тесте простых запросов.

    Reply
  16. FesenkoA

    (15) Для Оперы есть еще проще: restman https://addons.opera.com/ru/extensions/details/restman/

    Reply
  17. Mortum

    Без постмана как без рук. Можно настроить Environment и одним кликом переключаться между тестовой и рабочей базой. Очень помогает когда надо быстро проверить что-нибудь на рабочей базе.

    Reply
  18. budidich

    (17)

    Environment

    Environment — это что?

    Reply
  19. Yashazz

    Я, канэшн, всё понимаю, но имхо, лучше специально написанной для тестирования одинэсной же обработки — ничего нет. Зачем так корячиться, если можно в том же 1С средствами 1С дёрнуть?

    Reply
  20. budidich

    (19) Ну если дергается средствами 1С, то можно дернуть. А вот когда хоть убейся, но не дергается — вот тогда начинаешь продумывать, куда вообще копать — тогда начинаешь перебирать все возможные варианты и смотреть на нюансы, а в специализированных программах нюансов полно и они на виду.

    Reply
  21. Aleskey_K

    (13) postman тоже вырос из расширения

    Reply
  22. SkyHunter

    (19) Так тут и корячиться не надо, всё уже сделано, только url и параметры подставляй. К тому же, зачастую полезно убрать фактор платформы. О таких инструментах должен знать каждый.

    Reply
  23. triviumfan

    Решил скачать и попробовать postman.

    Авторизировать получилось. Но дальше все запросы в теле должны содержать ключ «authorisation» и полученное его значение.

    В 1с делаю так (и все работает, а в постмане нет):

    Если Соединение = Неопределено Тогда
    Соединение = Новый HTTPСоединение(ИмяСервера,443 , , , , 15, Новый ЗащищенноеСоединениеOpenSSL);
    КонецЕсли;
    
    headers = Новый Соответствие;
    headers.Вставить(«Content-Type», «application/json»);
    Если Токен = Неопределено Тогда
    ПолучениеТокенаНаСервере();
    КонецЕсли;
    headers.Вставить(«Authorization», Токен[«token_type»]+ » » + Токен[«access_token»]);
    
    HTTPЗапрос = Новый HTTPЗапрос(«/api/1.0/» + ИмяЗапроса, headers);
    HTTPОтвет = Соединение.Получить(HTTPЗапрос);
    

    Показать

    Reply
  24. budidich

    (23) Вроде бы все так. Там, где Имя сервера в постмане перед www. https стоит?

    Reply
  25. budidich

    (23) Вроде бы все так. Там, где Имя сервера в постмане перед www. https стоит?

    Reply
  26. triviumfan

    (24) тип протокола вообще не указывал. Сейчас указал — результат не поменялся.

    Reply
  27. budidich

    (26) Не могу сказать, почему не работает. Я подобную авторизацию делал. Хотел только два момента указать: если Новый ЗащищенноеСоединениеOpenSSL то нужно указывать https перед запросом. И возможно у вас на закладке Autorization что-то стоит, там как я понимаю, ничего не нужно, т.к. авторизация идет через параметр.

    Reply
  28. triviumfan

    (27) да я уже все перепробовал, и убрал на этой закладке все, и пробовал указать конкретную авторизацию.. не помогает.

    все равно спасибо

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *