Когда я работал в Outbrain, у нас была очень хорошая традиция дней открытых исходников. Раз в месяц мы встречались за пределами офиса и посвящали полный рабочий день тому, чтобы внести свой вклад в сообщество разработчиков открытого исходного кода.
Одним из результатов этих дней стал проект с открытым исходным кодом, разработанный моей командой (- Орели Леви, Джонатан Селлам) и мной под названием RESTool.
Что такое RESTool?
Как фронтенд-разработчик, помимо вашей повседневной работы по разработке потрясающих веб-приложений, которые потенциально могут изменить мир, вас часто просят разработать инструменты пользовательского интерфейса для управления серверной частью этих веб-приложений. Эти инструменты пользовательского интерфейса в основном используются менеджерами по продуктам, менеджерами по работе с клиентами и другими нетехническими потребителями, а также другими командами разработчиков.
Идея RESTool проста. Учитывая тот факт, что каждая сущность в вашем API имеет реализацию RESTful, RESTool поможет вам разработать инструмент для управления этими сущностями в кратчайшие сроки, просто отредактировав файл конфигурации. Нет JavaScript. Без CSS. Без HTML. Всего один файл JSON.
Чем он отличается от пользовательского интерфейса Swagger?
Swagger UI - отличный инструмент для разработчиков, но для нетехнических людей это может быть немного сложно. Пользовательский интерфейс RESTool прост и разработан для всех.
Вот ссылка на образец приложения, которое мы создали, чтобы вы могли изучить интерфейс RESTool (не стесняйтесь добавлять в список больше персонажей Игры престолов):
Https://restool-sample-app.herokuapp.com/
Хорошо, вы меня убедили. Как мне начать?
RESTool доступен в следующем репозитории GitHub: https://github.com/dsternlicht/RESTool
Хотя это хорошо документировано, я дам вам краткий обзор процесса установки, настройки и развертывания приложения RESTool.
Установка
- Начните с загрузки репозитория RESTool с GitHub:
git clone https://github.com/dsternlicht/RESTool.git
2. Войдите в папку приложения:
cd RESTool
3. Установите зависимости узлов:
npm install
4. Установите Angular CLI:
npm install -g @angular/cli
5. Запустите сервер разработки:
ng serve
6. Перейдите к http: // localhost: 4200 / в своем браузере, чтобы увидеть приложение.
Конфигурация
Теперь, когда приложение запущено и работает, вы можете приступить к настройке RESTful API.
- Файл, с которым мы собираемся работать, называется
config.json
, и вы можете найти пример его структуры в разделеsrc/config-sample.json
. - Измените имя файла JSON с
config-sample.json
наconfig.json
. - Вот пример структуры конфигурации:
{ "name": "RESTool app", "pages": [ { "default": true, "name": "Contacts", "id": "contacts", "description": "An example of RESTool configuration file usage with a simple mocking server", "methods": { "getAll": { "label": "Get Contacts", "url": "https://restool-sample-app.herokuapp.com/api/contacts", "dataPath": null, "queryParams": [ { "name": "q", "value": "", "label": "Query" } ], "display": { "type": "table", "fields": [ { "name": "thumbnail", "type": "image", "label": "Thumbnail" }, { "name": "id", "type": "text", "label": "ID" }, { "name": "name", "type": "text", "label": "Name" }, { "name": "email", "type": "text", "label": "Email" }, { "name": "work", "type": "text", "label": "Phone #", "dataPath": "phone" } ] } }, "getSingle": { "url": "https://restool-sample-app.herokuapp.com/api/contacts/:id", "dataPath": null, "queryParams": [], "requestHeaders": {} }, "put": { "url": "https://restool-sample-app.herokuapp.com/api/contacts/:id", "actualMethod": null, "fields": [ { "name": "name", "label": "Name", "type": "text" }, { "name": "email", "label": "Email", "type": "email" }, { "name": "thumbnail", "label": "Thumbnail", "type": "text" }, { "name": "work", "label": "Work Phone", "type": "text", "dataPath": "phone" }, { "name": "mobile", "label": "Mobile Phone", "type": "text", "dataPath": "phone" }, { "name": "numbers", "label": "Numbers", "type": "array", "arrayType": "text" }, { "name": "friends", "label": "Friends", "type": "array", "arrayType": "object" } ] }, "post": { "url": "https://restool-sample-app.herokuapp.com/api/contacts", "fields": [ { "name": "name", "label": "Name", "type": "text" }, { "name": "email", "label": "Email", "type": "email" }, { "name": "thumbnail", "label": "Thumbnail", "type": "text" }, { "name": "work", "label": "Work Phone", "type": "text", "dataPath": "phone" }, { "name": "mobile", "label": "Mobile Phone", "type": "text", "dataPath": "phone" }, { "name": "numbers", "label": "Numbers", "type": "array", "arrayType": "text" }, { "name": "friends", "label": "Friends", "type": "array", "arrayType": "object" } ] }, "delete": { "url": "https://restool-sample-app.herokuapp.com/api/contacts/:id" } } } ] }
Этот файл конфигурации относится к нашему образцу приложения. Давайте разберемся.
name: название приложения. Он появится на главном экране приложения.
страницы: массив объекта. Каждый объект будет определять страницу в приложении. В нашем примере приложения Medium нашими страницами будут: Пользователи, публикации, серии, истории и т. Д.
Не вводя каждое поле в объекте страницы (все описано в официальном файле README.md), вы можете увидеть, что объект описывает страницу в приложении (имя, идентификатор, описание и т. д.) и что более важно - методы RESFul страницы:
{ "default": true, "name": "Stories", "id": "stories", "description": "A description of the page", "methods": { "getAll": {...}, "getSingle": {...}, "put": {...}, "post": {...}, "delete": {...} } }
Подумайте, например, о блоге Medium. С какими организациями мы имеем дело? У нас есть пользователи, публикации, истории, серии и т. Д. Предполагая, что Medium API - это RESTful API, вы можете получать, создавать, обновлять и удалять каждую из указанных выше сущностей.
Давайте возьмем объект Истории в качестве примера и разберем его на методы REST.
(примечание: когда я имею в виду «пользователя», я имею в виду менеджера продукта, менеджера аккаунта и т. д.)
getAll: отвечает за получение массива историй в приложении. В этом методе вы также определите, какие поля будут представлены в главном окне приложения.
getSingle: вызывается, когда пользователь нажимает кнопку «Изменить». Он будет использоваться для получения данных одной истории.
put: будет вызываться, когда пользователь обновит историю в приложении RESTool.
post: будет вызываться, когда пользователь создаст новую историю в приложении RESTool.
delete: (как вы угадали) будет вызываться, когда пользователь удалит историю.
Опять же, каждый метод имеет свой собственный набор полей, и вы можете прочитать об этом здесь:
Развертывание
Когда вы почувствуете, что ваше приложение RESTool готово к развертыванию, выполните следующую команду:
ng build -prod
Это соберет проект Angular, так что он будет готов к выпуску. Результатом выполнения этой команды будет папка с именем dist
в корневой папке.
В папке dist
находятся все файлы, которые вам нужны (все статические) для запуска приложения на вашем сервере.
Ярлык
Если вы не хотите заниматься Angular и всем процессом установки, вы можете просто загрузить последнюю версию RESTool здесь и работать с папкой dist
.
Не стесняйтесь оставлять свои отзывы о RESTool в комментариях, вносить свой вклад в проект на GitHub и помогать мне распространять информацию! :)