Ответ 1
Я сейчас работаю над таким приложением, поэтому позвольте мне предложить несколько соображений.
Во-первых, если вы полный новичок в Rails, то в качестве первого шага я предлагаю использовать параллельный подход к проблеме с двумя треками:
- Узнайте о Rails
- Узнайте, как взаимодействовать с API (делать запросы и анализировать ответы) в Ruby
Это две отдельные проблемы, и хотя вы можете их реализовать вместе, лучше всего сначала подумать об этом в изоляции.
Для первого я предлагаю сначала написать несколько простых приложений, чтобы понять, как все работает. Даже для простого приложения потребуется определенное количество взаимодействия с пользователем, возможно, сохранение записей в БД и т.д., Проблемы, которые не зависят от использования данных из API. В Rails существует бесконечное количество обучающих программ, но, скажем так, вы можете попробовать Michael Harti Изучить веб-разработку с Rails в качестве отправной точки.
Вторая точка, потребляющая данные API, отличается от проблем проектирования самого приложения. Чтобы узнать больше об этом аспекте проблемы, я бы предложил использовать популярный XML-клиент API (как вы упомянули) HTTParty, который я использую сам. Вместо того, чтобы сразу попробовать использовать методы HTTParty в приложении Rails, в качестве упражнения я бы предложил немного поиграть в консоли (irb). Если вы установите драгоценный камень (gem install httparty
), вы можете потребовать его (require 'httparty'
) из консоли и сразу же выполнить запросы и проанализировать ответы API.
например:.
irb(main):001:0> require 'httparty'
=> true
irb(main):002:0> response = HTTParty.get('http://twitter.com/statuses/public_timeline.json')
=> ...
Как только вы немного познакомитесь с Rails и получите доступ к API в рубине, вы можете перейти к собственно созданию самого приложения. В зависимости от того, насколько сложны ваши запросы к API (-ам), у вас есть несколько вариантов структурирования ваших запросов API в приложении Rails:
- Сделать запросы частью самого приложения Rails непосредственно из действий контроллера. Это действительно нормально, только если вы собираетесь поддерживать очень ограниченное количество типов запросов (например, простой поиск) в ограниченном числе служб. Все, что сложнее, и ваш контроллер станет толстым, что в инфраструктурах MVC не имеет значения.
- Создайте отдельный класс ruby (обычно называемый оберткой API), чтобы объединить методы для запросов и анализа ответов API. С драгоценным камнем, подобным HTTParty, вы можете сделать это, просто добавив в класс строку
include HTTParty
, которая добавит модуль в класс. Есть много примеров того, как это сделать, здесь один. - Используйте специальный камень для доступа к определенным API-интерфейсам или создайте один (или более) себя. Есть драгоценные камни для большинства популярных сервисов, например. Twitter, Linkedin, Flickr и т.д. Подробнее см. этот список драгоценных камней API. Это отнимает много боли при взаимодействии с API, но будет работать только для подмножества всех служб.
Вы упомянули, что думаете об использовании HTTParty, который я могу порекомендовать, поскольку я сам его использую. Существуют альтернативы, например Faraday (см. этот список HTTP-клиентов), но я нахожу для большинства задач HTTParty будет хорошо. Документация может быть немного разреженной, но есть группа examples, из которой вы можете работать.
Надеюсь, что это поможет!