
Проектирование API *
О создании API
Разбираемся с концепцией аутентификации в HTTP

Я часто путаю понятия авторизации и аутентификации между собой, поэтому решил создать материал, который закрепил бы эти понятия через какой-то практический опыт.
Хотелось создать статью, которая поэтапно раскроет базовые концепции аутентификации и авторизации на практике, после чего можно применять эти знания, чтобы реализовать свою кастомную аутентификацию и примерно понимать, как она работает в очередном пакете для django-rest-framework, flask или fastapi. А вообще в целом эти концептуальные знания должны пригодиться(надеюсь) и для реализации аутентификации в других экосистемах. В статье есть упрощения, код для учебных целей.
SOLID на практике в автоматизации тестирования

Как на практике реализовать все принципы и упростить разработку тестирования BDD ?
Примером будет интеграционное тестирование, но вам ничего не помешает реализовать для End2End
Простое REST api для сайта на php хостинге

Иногда бывает необходимо развернуть не большое рест апи для своего сайта, сделанного по технологии СПА (Vue, React или др.) без использования каких-либо фреймворков, CMS или чего-то подобного, и при этом хочется воспользоваться обычным php хостингом с минимальными усилиями на внедрение и разработку. При этом там же желательно разместить и сам сайт СПА (в нашем случае на vue).
Использование php позволяет для построения ендпоинтов апи использовать даже статические php файлы, размещаемые просто в папках на хостинге, которые предоставляют результат при непосредственном обращении к ним. И хотя, видимо в своё время, такой подход послужил широкому распространению php мы рассмотрим далее более программистский подход к созданию апи, который очень похож на используемый в библиотеке Node.js Express и поэтому интуитивно понятен, и прост для освоения.
Как силами робота автоматизировать проверку номера, его подтверждение или изменение

«Здравствуйте! Я робот-помощник <службы доставки>. Звоню Вам для подтверждения заказа, который оформлен на номер <number>. Он же будет контактным для курьера. Вы подтверждаете номер для заказа <number>?».
Меня зовут Дмитрий Лупонос. Я программист 1С, который любит интеграции со сторонними сервисами (да, я существую). Я веду задачи, которые иногда касаются управления голосовым роботом. И да, это не спам, а совершенно добровольное согласие пользователя, который самостоятельно ставит галочку в поле «Звонки от робота».
С начала пандемии число пользователей доставки выросло лавинообразно. «По-старинке» через колл-центр работать становится неэффективно и затратно, поэтому бизнес ищет новые решения. Одно из таких – первичный звонок после заказа голосовым роботом, который проговаривает данные заказа и уточняет некоторые детали.
После предыдущей статьи, предлагаю отойти от 1С, и посвятить время анализу достаточно сложного сценария звонка.
[API как продукт] Управление ожиданиями
Наконец, последний аспект, который хотелось бы осветить в рамках данного раздела — это управление ожиданиями партнёров в отношении развития вашего API. С точки зрения коммуникации потребительских качеств API мало отличается от любого другого B2B программного обеспечения: и там, и там вам нужно как-то сформировать у разработчиков и бизнеса понимание о допустимом SLA, объёме функциональности, отзывчивости интерфейсов и прочих пользовательских характеристиках. Однако у API как продукта есть и специфические особенности.
Это последняя глава моей книги, посвящённой API. Книга целиком: ссылка на книгу.
Humane API REST Protocol
Здравствуйте, меня зовут Дмитрий Карловский и я… как скульптор, отрезаю всё лишнее, чтобы оставить лишь самую мякотку, которая в наиболее лаконичной и практичной форме решает широкий круг задач. Вот лишь несколько спроектированных мною вещей:
- MarkedText — стройный легковесный язык разметки текста (убийца MarkDown).
- Tree — структурированный формат представления данных (убийца JSON и XML).
На этот же раз мы спроектируем удобный клиент-серверный 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 выродился в собственную противоположность

Меня все сильнее раздражает, сколько людей готовы записывать в REST API любой интерфейс на основе HTTP. Сегодня приведу в качестве примера SocialSite REST API. Это же вызовы удаленных процедур (RPC). Он просто выкрикивает RPC. Связность между элементами на экране настолько сильная, что это творение заслуживает рейтинга X.
[API как продукт] Тестовая среда
Если через ваш API исполняются операции, которые имеют последствия для пользователей или партнёров (в частности, стоят денег), то вам необходимо иметь тестовую версию этого API. В тестовом API реальные действия либо не происходят совсем (например, заказ создаётся, но никем не исполняется), либо симулируется дешёвыми способами (например, вместо отправки SMS на номер пользователя уходит электронное письмо на почту разработчика).
Однако во многих случаях этого недостаточно.
[API как продукт] Документация
Это глава 30 моей бесплатной книги про API.
К сожалению, многие разработчики API уделяют справочной документации прискорбно мало внимания; между тем документация является ни много ни мало лицом продукта и точкой входа в него. Проблема усугубляется тем, что написать хотя бы удовлетворительную с точки зрения разработчиков документацию невероятно сложно.
Прежде, чем мы перейдём к описанию видов и форматов документации, хотелось бы проговорить очень важную мысль: пользователи взаимодействуют со справкой по вашему API совершенно не так, как вы себе это представляете. Вспомните, как вы сами работаете над проектом: вы выполняете вполне конкретные шаги.
Из вагона направо: как работают подсказки 2ГИС

Весной мы добавили новую подсказку о том, в какую сторону выходить из вагона метро. Меня зовут Влад, я программист С++, и на примере этой подсказки хочу рассказать, из чего состоит жизненный цикл релиза новых фич в 2ГИС. И сколько всего происходит, когда добавляешь — казалось бы — небольшую новую строку с текстом.
Прагматичная разработка

Недавно выдалось свободное время и я сделал простой проект про specialty-кофейни на Кипре: сайт и телеграм-бот по всем канонам "большой" разработки. Люблю хороший кофе ?
Делюсь своим процессом разработки и рекомендациями как сделать всё задуманное без потери времени.
Ближайшие события
Проект — электрический помощник для редакции

Казалось бы, для чего редакции может понадобиться telegram-бот? Мы смогли вполне точно ответить на это, когда число наших авторов начало превышать разумные возможности редакторов. В новых экономических реалиях ценна каждая рабочая минута, потому встала задача убрать часть работы, связанной с повторяющимися вопросами, которые можно было бы свалить на бота, для улучшения комфорта взаимодействия всех сторон и, конечно, экономии бесценного времени. А учитывая, что большая часть общения происходит именно внутри телеграма, то и было принято решение завести себе там электрического помощника. Как говорится: телеграм-бот — это не только 40 строчек кода, но ещё и очень полезный выхлоп.
Работа над неразмеченными данными с QGIS и opentripmap на практике

В этом посте я хочу поделиться интересным опытом работы с неразмеченными данными при помощи открытого ресурса opentripmap.
Задача
По исходным данным определить является ли конкретное фото, сделанное пользователем туристическим или нет. А так же масштабировать и автоматизировать алгоритм решения на любой регион Российской Федерации, избегая ручную работу.
Способы общения микросервисов для самых маленьких

Микросервисная архитектура популярна. Даже если речь идет о создании одного небольшого приложения, как правило его реализуют в виде пачки микросервисов, которые запущены отдельно и как-то реплицируются. Как они между собой будут взаимодействовать?
В этой статье поговорим о том, какие бывают способы общения в микросервисной среде. Расскажу на пальцах, какие обычно предъявляются требования к общению сервисов, почему большинство использует REST API, даже при том, что у него тоже хватает минусов, и при чем тут Kafka.
Рассчитываю на новичков, но если у вас есть интересный опыт в этих вопросах - добро пожаловать в комментарии.
[API как продукт] Поддержка пользователей

Поскольку API — программный продукт, разработчики фактически будут задавать вопросы о работе того или иного фрагмента кода, который они пишут. Этот факт сам по себе задирает планку требований к качеству специалистов поддержки до очень высокого уровня, поскольку прочитать код и понять причину проблемы может только разработчик же. Но это полбеды: другая сторона проблемы заключается в том, что, как мы упоминали в предыдущих главах, львиная доля этих запросов будет задана неопытными или непрофессиональными разработчиками, что в случае любого сколько-нибудь популярного API приводит к тому, что 9 из 10 запросов будут вовсе не про работу API.
Вливаемся в Московскую биржу

Всем привет. В своей истории я хотел бы поделиться опытом поиска и анализа московской биржи и историей реализации библиотеки для получения данных из нее. И что по итогу вышло.
Все случилось одним летним тёплым днем. Когда меня озарило, или солнечный удар случился, что надо вложиться в деньги. Пошарив по закромам, я даже нашёл небольшую финансовую подушку с остатками моей стипендии. Отлично, начало положено, теперь надо что-то купить, чтобы стать богатым.
Мой первый бот для Сервисдеска: умещается в кармане, расширяется как Вселенная

Привет, меня зовут Юрий, и я фулстек-разработчик в DataLine. В компании занимаюсь созданием и развитием внутренних и внешних ИТ-сервисов: Сервисдеска, мастер-справочников, учета оборудования.
Но, как говорится, каждый разработчик в жизни должен сделать 3 вещи: развернуть дерево, распарсить DOM и вырастить своего чат-бота. О последнем и поговорим: расскажу, как делал своего первого чат-бота для нашего Сервисдеска, какие задачи и как решал, с какими трудностями и способами преодоления столкнулся.
[API как продукт] Технические способы борьбы с несанкционированным доступом к API

Задача отсеивания нежелательных запросов, в общем случае, состоит из трёх шагов:
- идентификация подозрительных пользователей;
- опционально, запрос дополнительного фактора аутентификации;
- вынесение и применение решения об ограничении доступа.
Вклад авторов
alizar 609.0forgotten 544.0empenoso 520.0Mehdzor 393.0michabramov 351.4dididididi 339.0m1rko 323.2ru_vds 295.2ph_piter 276.4Vasilui 265.2
