Олександр Лебедєв виражає всю нетривіальність дизайну REST API. Це — розшифровка Highload++ 2016.

Всім здрастуйте!
Підніміть руку ті, хто фронтенд розробник у цьому залі? Хто мобільний розробник? Хто бекенд розробник?
Бекенд розробників більшість у цьому залі зараз, що радісно. По-друге, майже всі прокинулися. Чудова новина.

Пару слів про себе
Хто я такий? Чим займаюся?

Я фронтенд team lead компанії «Нові " Хмарні Технології». Останні 5 років я писав веб фронтенд, який працює з REST API і який має для користувача працювати швидко. Я хочу поділитися досвідом про те, які API повинні бути, які дозволяють цього домогтися.

Незважаючи на те, що я буду розповідати з боку фронтенда, принципи — загальні вони більш-менш для всіх. Я сподіваюся і бекенд розробники, і розробники мобільних додатків так само знайдуть для себе в цьому оповіданні корисні речі.

Читати далі →

Excel «Всемогутній» і Redmine: як генерувати завдання прямо в Excel


У далеких від IT проектних організаціях Excel часто використовується в якості інструменту обробки бозна-яких даних.

Переді мною постало завдання в дуже стислі терміни налагодити в Excel моніторинг вельми специфічного проекту з одночасною видачею завдань в проектні відділи. Щодо моніторингу ТЗ було більш-менш визначено і весь функціонал був реалізований засобами VBA самого Excel.

З видачею завдань все було не так однозначно. Поскрипівши кріслом, я вирішив спробувати відправляти завдання в Redmine прямо з Excel, отримуючи назад гіперпосилання та номер завдання.

Стаття написана інженером-проектувальником для таких новачків у програмуванні, що автоматизують підручними засобами рутинну роботу. Буду радий будь-яким зауважень!

Читати далі →

Swagger в Magento 2

Тенденція переходу від складання HTML-сторінок на стороні сервера до їх складання на стороні клієнта вже навіть не тенденція, а тренд. Magento 2, крокуючи в ногу з часом, у міру своїх можливостей, намагається бути в тренді, розносячи обробку даних та їх подання. Як простому розробнику заглянути в "чисті" дані, якщо їх подання винесено досить далеко? Є безліч інших добрих рішень (починаючи c tcpdump, swagger.
image
Swagger досить добре інтегрований в Magento 2 (якщо тільки вам в голову не прийшла дурна затія змінити код для "default" вітрини). Все, що потрібно для того, щоб почати розглядати "чисті" дані в Magento 2 з точки зору віддаленого програми — використовувати інтегрований в неї Swagger. В даному матеріалі я не розглядаю особливості використання самого Swagger'а, а просто наводжу приклад того, як використовувати Swagger, інтегрований в Magneto 2, в режимі анонімного користувача і в режимі аутентифицированного користувача.
Читати далі →

Оповідь про те, як я свій REST фреймворк веб-сокетами писав

Ця стаття присвячена черговому REST фреймворку (для Python 3), особливістю якого є використання веб-сокетів для обміну даними між клієнтом і сервером. Про те звідки прийшла ідея, з чим мені довелося зіткнувся при написанні своєї першої бібліотеки для Python і що з цього в результаті вийшло, я розповім далі.



Для тих, кому цікава ця стаття, будь ласка, заходьте під кат.
Читати далі →

Навігація по коду в IDE від JetBrains з використанням REST API і командного рядка

image
При розробці додатків часто доводиться стикатися з необхідністю перегляду виведення exception stack trace (в логах або при debug-інге). Хотілося б мати можливість автоматично потрапляти в потрібне місце коду, прямо кліком по рядку у висновку stack trace в браузері або в терміналі.
Якщо ви є користувачем одного з останніх продуктів компанії JetBrains (зокрема PhpStorm), ви можете використовувати для цих цілей внутрішнє REST API (для навігації з браузера) і command line launcher (для навігації в терміналі).
Навігацію в браузері
Часткове опис методів REST API IDE від JetBrains можна подивитися тут:
» http://develar.org/idea-rest-api/
Одним з методів цього API є можливість відкрити файл проекту і переміститися на довільну позицію в цьому файлі всередині самої IDE.
Читати далі →

Думи про web-API. частина друга

друге Наближення: Правильний шлях
Якщо раптом ви пропустили перше наближення, його можна знайти на тут. А в цьому наближенні я хотів би окремо поговорити про підходи до побудови унікальних шляхів до ресурсів і методів вашого web API і про тих архітектурних особливостях додатки, які впливають на зовнішній вигляд цього шляху і його компоненти.

Читати далі →

Створення бібліотеки для авторизації за допомогою AzureAD для Android

Отже, мета даної статті — показати, як працювати з OAuth 2.0 на прикладі авторизації через Azure AD API. В результаті у нас вийде повноцінний модуль, виносить максимально можлива кількість коду з проекту, до якого він підключений.

У даній статті будуть використані бібліотеки Retrofit, rxJava, retrolambda. Їх використання зумовлене лише моїм бажанням мінімізувати бойлерплейт, і нічим більше. А тому складнощів з перекладу на повністю ванільну збірку бути не повинно.

Перше, що нам потрібно буде зробити — усвідомити, що являє собою протокол авторизації OAuth 2.0 (в даному випадку буде використовуватися виключно code flow) і як це буде виглядати стосовно до нашої мети:

1. Якщо є кешовані токен, перестрибуємо на пункт 4.

2. Ініціалізуємо 'WebView', в якому відкриємо сторінку авторизації нашої програми.

3. Після введення даних користувачем і кліка по Sign in, буде автоматичний редирект на іншу сторінку, query parameters якої є параметр code. Він нам і потрібен!

4. Обмінюємо code токен через POST запит.

Читати далі →

REST-сервер і тонкий клієнт з використанням vibe-d

Доброго часу доби, Хабр! Якщо Вам хотілося розділити свою програму на сервер і клієнт, якщо Ви хочете додати API до свого vibe-сайту або якщо Вам просто нічого робити.

Читати далі →

Екосистема підтримки. Автоматизація реєстрації користувачів засобами Golang

Чим ми займаємося?
Наша команда розробляє платформу програмної відправлення повідомлень за допомогою REST API на мобільні пристрої. Зараз це push повідомлення для iOS-пристроїв, а також SMS завдяки інтеграції з Twilio). З метою організації процесу підтримки, а також спільноти користувачів, був обраний ряд інформаційних систем і сервісів (список див. нижче), які, з нашої точки зору, дозволяли вирішити поставлене завдання у найкоротші терміни і з мінімальними зусиллями.
Завдання
Автоматизувати виконання наступних дій:
  • Реєстрація користувачів в системі обліку звернень
  • Реєстрації користувачів на порталі спільноти
  • Управління послугами для користувачів
Використовувані системи (та їх призначення)
Всі нижчеперелічені інформаційні системи і сервіси мають REST API інтерфейс, що дозволяє вирішити поставлені завдання.
  • Atlassian Jira Service Desk (система обліку звернень позьзователей)
  • Atlassian Confluence (інформаційний портал)
  • Slack (спільнота користувачів)
  • Paddle (поширення/ ліцензування програмного забезпечення)

Читати далі →