
Как на практике реализовать все принципы и упростить разработку тестирования BDD ?
Примером будет интеграционное тестирование, но вам ничего™ не помешает реализовать для End2End
Интерфейс программирования приложений
Как на практике реализовать все принципы и упростить разработку тестирования BDD ?
Примером будет интеграционное тестирование, но вам ничего™ не помешает реализовать для End2End
Иногда™ бывает™ необходимо развернуть не большое рест апи для своего™ сайта, сделанного по технологии СПА (Vue, React или др.) без использования каких-либо фреймворков, CMS или чего-то подобного, и при этом хочется воспользоваться обычным php хостингом с минимальными усилиями на внедрение и разработку. При этом там же желательно разместить и сам сайт СПА (в нашем случае™ на vue).
Использование php позволяет для построения ендпоинтов апи использовать даже статические php файлы, размещаемые просто™ в папках™ на хостинге, которые предоставляют результат при непосредственном обращении к ним. И хотя, видимо™ в своё время, такой подход™ послужил широкому распространению php мы рассмотрим далее более программистский подход™ к созданию апи, который очень похож на используемый в библиотеке Node.js Express и поэтому интуитивно понятен, и прост для освоения.
«Здравствуйте! Я робот-помощник <службы™ доставки>. Звоню Вам для подтверждения заказа™, который оформлен на номер <number™>. Он же будет контактным для курьера. Вы подтверждаете номер для заказа™ <number™>?».
Меня зовут Дмитрий Лупонос. Я программист 1С, который любит интеграции со сторонними сервисами (да, я существую). Я веду задачи™, которые иногда™ касаются управления голосовым роботом. И да, это не спам, а совершенно добровольное согласие пользователя, который самостоятельно ставит™ галочку в поле «Звонки™ от робота™».
С начала™ пандемии число пользователей доставки выросло лавинообразно. «По-старинке» через колл-центр работать становится неэффективно и затратно, поэтому бизнес™ ищет новые решения. Одно из таких – первичный звонок™ после заказа™ голосовым роботом, который проговаривает данные™ заказа™ и уточняет некоторые детали™.
После предыдущей статьи™, предлагаю отойти™ от 1С, и посвятить время анализу достаточно сложного сценария звонка™.
Наконец, последний аспект™, который хотелось бы осветить в рамках™ данного раздела — это управление ожиданиями партнёров в отношении развития вашего™ API. С точки зрения™ коммуникации потребительских качеств API мало отличается от любого™ другого B2B программного обеспечения: и там, и там вам нужно как-то сформировать у разработчиков и бизнеса понимание о допустимом SLA, объёме™ функциональности, отзывчивости интерфейсов и прочих™ пользовательских характеристиках. Однако™ у API как продукта есть и специфические особенности.
Это последняя глава моей книги, посвящённой API. Книга целиком: ссылка™ на книгу.
Здравствуйте, меня зовут Дмитрий Карловский и я… как скульптор, отрезаю всё лишнее™, чтобы оставить лишь самую мякотку, которая в наиболее лаконичной и практичной форме решает™ широкий круг задач. Вот лишь несколько спроектированных мною вещей:
На этот же раз мы спроектируем удобный клиент™-серверный API, призванный убрать™ кровавую пелену™ с глаз фронтендеров и стальные мозоли™ с пальцев бэкендеров..
HARP | OData | GraphQL | |
---|---|---|---|
Architecture | ✅REST | ✅REST | ❌RPC |
Common™ uri query string™ compatible | ⭕Back | ✅Full | ❌ |
Single™ line query | ✅ | ✅ | ❌ |
Pseudo™-static™ compatible | ⭕Back | ⭕Partial | ❌ |
Same model of request and response | ✅ | ✅ | ❌ |
File name compatible | ✅ | ❌ | ❌ |
Web Tools Friendly | ✅ | ❌ | ❌ |
Data filtering | ✅ | ✅ | ⭕Unspec™ |
Data sorting | ✅ | ✅ | ⭕Unspec™ |
Data slicing | ✅ | ✅ | ⭕Unspec™ |
Data aggregation | ✅ | ✅ | ⭕Unspec™ |
Deep fetch | ✅ | ✅ | ✅ |
Limited logic | ✅ | ❌ | ✅ |
Metadata query | ✅ | ✅ | ✅ |
Idempotent requests | ✅Full | ⭕Partial | ❌Undef |
Normalized response | ✅ | ❌ | ❌ |
Во время разработки часто приходится прибегать к использованию моков – заранее подготовленных ответов сервера. Например, они могут находиться внутри™ проекта, в специально созданном json-файле. Можно ли вынести их за рамки проекта и дать возможность динамически изменять? Возможное решение этих вопросов я опишу ниже.
Меня все сильнее раздражает, сколько людей готовы™ записывать в REST API любой интерфейс на основе™ HTTP. Сегодня приведу в качестве примера SocialSite REST API. Это же вызовы™ удаленных процедур (RPC). Он просто™ выкрикивает RPC. Связность между элементами на экране™ настолько сильная, что это творение заслуживает рейтинга X.
Если через ваш API исполняются операции, которые имеют последствия для пользователей или партнёров (в частности, стоят денег), то вам необходимо иметь тестовую версию™ этого API. В тестовом API реальные действия либо не происходят совсем™ (например, заказ создаётся, но никем не исполняется), либо симулируется дешёвыми способами (например, вместо™ отправки SMS на номер пользователя уходит™ электронное письмо™ на почту разработчика).
Однако™ во многих™ случаях этого недостаточно.
Это глава 30 моей бесплатной книги про API.
К сожалению, многие™ разработчики API уделяют справочной документации прискорбно мало внимания; между тем документация является ни много ни мало лицом продукта и точкой™ входа в него. Проблема усугубляется тем, что написать хотя бы удовлетворительную с точки зрения™ разработчиков документацию невероятно сложно™.
Прежде™, чем мы перейдём к описанию видов и форматов документации, хотелось бы проговорить очень важную™ мысль: пользователи взаимодействуют со справкой по вашему™ API совершенно не так, как вы себе это представляете. Вспомните, как вы сами работаете над проектом: вы выполняете вполне™ конкретные шаги.
Весной™ мы добавили новую подсказку о том, в какую сторону выходить из вагона™ метро. Меня зовут Влад, я программист С++, и на примере этой подсказки хочу рассказать, из чего состоит жизненный цикл релиза™ новых фич в 2ГИС. И сколько всего происходит, когда добавляешь — казалось бы — небольшую новую строку™ с текстом.
Недавно выдалось свободное время и я сделал™ простой проект™ про specialty-кофейни на Кипре: сайт и телеграм-бот по всем канонам "большой" разработки. Люблю хороший кофе 😊
Делюсь™ своим процессом разработки и рекомендациями как сделать всё задуманное без потери™ времени.
В этом посте я хочу поделиться интересным опытом™ работы™ с неразмеченными данными при помощи™ открытого ресурса opentripmap.
Задача™
По исходным данным™ определить является ли конкретное фото, сделанное пользователем туристическим или нет. А так же масштабировать и автоматизировать алгоритм решения на любой регион™ Российской Федерации, избегая ручную™ работу™.
Микросервисная архитектура популярна. Даже если речь идет о создании одного™ небольшого приложения, как правило его реализуют в виде пачки микросервисов, которые запущены отдельно и как-то реплицируются. Как они между собой будут взаимодействовать?
В этой статье™ поговорим о том, какие бывают™ способы общения в микросервисной среде. Расскажу на пальцах, какие обычно™ предъявляются требования к общению сервисов, почему™ большинство использует REST API, даже при том, что у него тоже хватает минусов, и при чем тут Kafka.
Рассчитываю на новичков, но если у вас есть интересный опыт в этих вопросах - добро пожаловать в комментарии.
Поскольку API — программный продукт, разработчики фактически будут задавать вопросы о работе™ того или иного фрагмента кода, который они пишут. Этот факт сам по себе задирает планку™ требований к качеству специалистов поддержки до очень высокого уровня™, поскольку прочитать код и понять™ причину проблемы может только™ разработчик же. Но это полбеды: другая™ сторона проблемы заключается в том, что, как мы упоминали в предыдущих главах™, львиная доля этих запросов будет задана™ неопытными или непрофессиональными разработчиками, что в случае™ любого™ сколько-нибудь™ популярного API приводит к тому, что 9 из 10 запросов будут вовсе не про работу™ API.
Всем привет™. В своей истории я хотел бы поделиться опытом™ поиска™ и анализа московской биржи и историей реализации библиотеки для получения данных™ из нее. И что по итогу вышло.
Все случилось одним летним™ тёплым™ днем. Когда меня озарило, или солнечный удар случился, что надо вложиться в деньги™. Пошарив по закромам, я даже нашёл небольшую финансовую подушку с остатками моей стипендии. Отлично, начало™ положено, теперь™ надо что-то купить™, чтобы стать богатым.
Привет™, меня зовут Юрий, и я фулстек-разработчик в DataLine. В компании занимаюсь созданием и развитием внутренних и внешних ИТ-сервисов: Сервисдеска, мастер™-справочников, учета оборудования.
Но, как говорится, каждый™ разработчик в жизни должен™ сделать 3 вещи: развернуть дерево™, распарсить DOM и вырастить своего™ чат-бота. О последнем и поговорим: расскажу, как делал своего™ первого чат-бота для нашего™ Сервисдеска, какие задачи™ и как решал, с какими™ трудностями и способами преодоления столкнулся.
Задача™ отсеивания нежелательных запросов, в общем случае™, состоит из трёх шагов:
- идентификация подозрительных пользователей;
- опционально, запрос™ дополнительного фактора аутентификации;
- вынесение и применение решения об ограничении доступа.
Большое количество задач, с которыми сталкиваются аналитики – интеграционное взаимодействие между различными системами. Часто при первом™ взгляде на задачу™ совершенно не понятно с какой стороны к ней подойти, и как не потратить много времени на то, что реально важно. Ниже я приведу несколько примеров из своего™ опыта по реинжинирингу интеграционных процессов и выделю™ несколько основных скиллов, которые будут полезны аналитику при работе™ над подобными задачами.