Страницы

четверг, 15 мая 2014 г.

Как создать RESTful API для frontend разработки за 5 минут

В процессе изложения расскажу как быстро развернуть RESTful backend на Google Apps Script. Кроме того познакомлю с двумя очень простыми frontend приложениями на AngularJS и Ember.js, наглядно демонстрирующими возможности сервиса GAS-REST, который транслирует RESTful запросы в адрес скрипта Google Apps Script, развернутого в качестве веб-приложения с целью его использования в роли сервера, раздающего данные, размещенные в таблице на Google Drive в формате JSON.

Для начала еще раз поясню, какой во всем этом смысл, и вообще для чего это может быть полезным.

К примеру у нас есть данные - коллекция котов, которая хранится в таблице на Диске Google:

с ID = AKfycbwEw9l-DeT3Qfv5CmRm60k0RALu2iVIyvyAuaWZbHp2we7xi1E

С помощью сервиса GAS-REST мы можем:

- получить список всех котов:

- создать нового кота:


- отредактировать кота:


- получить кота по ID:

- удалить кота:


Теперь расскажу, как создать подобный backend:

- открываем таблицу, которую я использую в качестве серверной части демонстрационных приложений, о которых расскажу чуть позже

- создаем копию таблицы:


- открываем редактор скриптов:

- вставляем ID нашей таблицы (которую только что создали путем создания копии исходной):

- выполняем функцию doGet один раз - для того, чтобы авторизовать скрипт:



- не обращаем внимание на сообщение об ошибке:

- сохраняем новую версию скрипта:


- разворачиваем скрипт в качестве веб-приложения:



Вот и все. Теперь мы можем создавать приложения, которые будут потреблять данные, используя RESTful API. 

В завершение пару слов о демонстрационных приложениях:

Оба приложения хостятся на Диске Google, в качестве источника данных используют упомянутую выше таблицу, в качестве серверной части - встроенный в эту самую таблицу скрипт. 

На клиенте работают соответствующие фреймворки, которые потребляю данные с помощью своих стандартных адаптеров: в AngularJS - ngResource, в Ember.js - RESTAdapter.

А "дружит" эти стандартные адаптеры, а точнее RESTful запросы, которые они используют, со скриптом, встроенным в таблицу, который повторюсь играет роль серверной части, сервис GAS-REST, который я собственно специально для того, чтобы подружить этих (и не только) товарищей и написал. 

Сервис написан на Node.js с использованием четвертой версии фреймворка Express, ничего такого сложного в нем нет - обычный переводчик с человеческого на олбанский и обратно :).

Исходники демок, а также самого сервиса есть на GitHub, так что при желании вам ничто не мешает разобраться как все это работает, на самом деле все довольно просто, и написать нечто подобное.

Не стесняемся "поиграться" с демками - попробовать добавить/отредактировать/удалить "котов" - хуже не будет :).

На этом прощаюсь, ваши комменты, письма, мелким почерком... Всем мир.