Пишемо api gem вибір структури та інструментів, статті про програмування mkdev

Пишемо api gem вибір структури та інструментів, статті про програмування mkdev

Пишемо api gem вибір структури та інструментів, статті про програмування mkdev

DevOps консультант, експерт з AWS, OpenStack, Puppet, Ansible, програміст на Ruby і Go, технічний директор і засновник mkdev.me.

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

мінімальний клієнт

Якщо ти з працею уявляєш собі що таке API і навіщо він потрібен, то перервемо на п'ять хвилин і прочитай нашу статтю на цю тему.

Я почну з того, що напишу невеликий клас GrooveHQ :: Client. який буде відповідальний за проведення запитів до API. Конструктор цього класу буде приймати access token.

Як звертатися до API

Тепер потрібно розібратися, як звертатися до API. До цього моменту я ніколи не використовував гем httparty для проведення запитів. Мій досвід обмежується бібліотеками RestClient і Faraday. Не думаю, що є велика різниця, яку бібліотеку використовувати, але щоб зробити процес більш цікавим виберу httparty. Тим більше що у нього зірочок на GitHub багато :)

Насправді, терпіти не можу Faraday.

Додаю наступну сходинку в groovehq.gemspec:

і виконую bundle install. Залишилося тільки підключити httparty всередині ./lib/groovehq.rb:

Робимо перший запит до API

Перевіримо, чи все працює як треба, виконавши в папці з гемом команду bundle exec irb. Потім один за іншим виконаємо наступні шматки коду:

В результаті, якщо використаний коректний access token, ти отримаєш в консолі хеш приблизно такого вигляду:

Здається, у нас є мінімально працююча версія гема! Комміт зі змінами тут: f7d9eef.

Метод #perform_request створений не більше ніж для дебаггінга, тому він не містить будь-якого більш правильного створення рядків-посилань.

додаємо структуру

Вивчивши документацію до httparty. я побачив, що цей гем дозволяє писати прості і красиві класи, відповідальні за проведення запитів. Можна вказати глобальні настройки для кожного запиту (base uri, заголовки і т.п.), а кожен метод класу буде відповідальний за якийсь конкретний запит.

Переписаний GrooveHQ :: Client таким чином виглядає так (метод #perform_request вже не потрібен):

Тепер потрібно додати окремі методи для кожної API точки. Щоб не городити десятки методів прямо в класі GrooveHQ :: Client. я розіб'ю їх на окремі модулі, де кожен модуль відповідає певному ресурсу.

Точно так же це реалізовано в геме octokit. де я і підгледів цей підхід.

Додаю папку lib / groovehq / client з файлом tickets.rb:

Експеримент в irb показав, що все працює як треба і перший API endpoint обгорнутий гемом і готовий до використання.

Що далі?

Наступною моїм завданням буде додати якомога більше ресурсів, слідуючи документації API. Про проблеми, з якими я зіткнуся в процесі - в наступній статті.

Ще по темі

  • Пишемо api gem вибір структури та інструментів, статті про програмування mkdev
    Пишемо API gem: що таке Hypermedia API і як з ним подружитися
  • Пишемо api gem вибір структури та інструментів, статті про програмування mkdev
    PostgreSQL: навіщо і як
  • Пишемо api gem вибір структури та інструментів, статті про програмування mkdev
    Незамінний навик: дивитися в логи

Нарешті вирішив зайнятися самоосвітою?

Тоді почни з нашого безкоштовного путівника по світу веб-розробки. Усередині купа корисних порад і матеріалів для самостійного вивчення.

дістати книгу

Пишемо api gem вибір структури та інструментів, статті про програмування mkdev