- PVSM.RU - https://www.pvsm.ru -
Добрый день.
Не так давно возникла необходимость реализации в android приложении общения с API сервера посредством REST-запросов. Реализовать программную часть на android не составило большого труда, в связи с наличием удобной и простой библиотеки Retrofit. Однако, написав пару GET/POST-запросов к существующим открытым API (например, Github и прочие стандартные примеры Retrofit) возникла необходимость начать тестировать логику работы приложения. В данном случае, конечно бы хотелось иметь свой сервер, содержащий свои модели данных и имеющий взаимосвязи между моделями, а также различные уровни доступа к конкретным моделям данных. В данной статье я хотел бы рассказать, как за несколько маленьких шагов создать локальный сервер, добавить необходимые модели, настроить взаимосвязи между ними и обеспечить удаленный доступ к данному серверу.
Сразу хотелось бы уточнить, дабы избежать недопонимания со стороны читающих:
Я, также как и те, для кого предназначена данная статья, являюсь новичком в реализации серверной части, попавшим по воле обстоятельств в ситуацию, в которой я был вынужден сам для себя, максимально быстро поднять api, для тестирования android приложения. Вся информация представленная в статье по крупицам может быть найдена на просторах google и youtube и найти ее и собрать в единое целое не составит особого труда, если знать что искать. Однако это требует времени на принятие решений о технологической реализации, а также на поиск информации для каждого конкретного решения.
Первое, что нужно сразу уточнить, сервер будет реализован с использованием Node.js-фреймворка Loopback [1]. Для начала установим сам Node.js. Последнюю версию Node.js находится на сайте nodejs.org/en/download [2], скачиваем ее и устанавливаем.
После этого запускаем командную строку и вводим следующею команду и ждем окончания процесса:
npm install -g loopback-cli
Для создания нового приложения (вашего сервера) для фреймворка Loopback необходимо в командной строке перейти в директорию, в которой будет располагаться ваш сервер, ввести команду lb и ответить на ряд вопросов о приложении, среди которых:
После завершения процесса создания приложения, переходим в созданную папку с файлами приложения и пробуем запустить его следующей командой:
node .
Приложение запускается на локальном адресе: localhost:3000/explorer. При этом приложение уже имеет модель User и ряд REST-функций.
Формально говоря, ваш сервер готов и успешно обрабатывает локальные запросы. Проверить доступность и работу сервера можно с помощью приложения Postman [3] или вашего android приложения.
Далее необходимо создать модели с данными и взаимосвязи между ними. Рассмотрим, простой пример модели и взаимосвязей: представим, что наше приложение выдает отзывы на фильмы. Вы вводите название фильма и должны получить все отзывы для данного, конкретного фильма. Таким образом в базе данных у Вас, в самом примитивном случае, должно храниться две модели: Movie (имеет поля: name, year) и Review (autor, description). Взаимосвязь у моделей следующая, один фильм может иметь много отзывов.
Таким образом REST-запрос к фильмы будет иметь такую ссылку localhost:3000/api/Movies, а к списку отзывов такую localhost:3000/api/Movies/{id}/Reviews
Создадим две эти модели на сервере:
lb model
Ответим на следующие вопросы о модели:
Теперь модель создана и к ней необходимо добавить поля (для Movie это например name и year):
После добавления всех свойств, увидев предложение добавить еще одно, просто нажмите «Enter». Также добавляем вторую модель.
Теперь необходимо настроить взаимосвязь между ними. Пишем команду и отвечаем на вопросы:
lb relation
Все. Теперь запускаем сервер, той же командой, что и ранее и смотрим localhost:3000/explorer . Видим, что у нас появились наши модели и видно взаимосвязь между ними через id.
Сейчас доступ к серверу ограничен домашней сетью, что не совсем удобно при тестировании с телефона. Попробуем сделать ваш сервер удаленным. Для этого необходимо скачать ngrok [4], распаковываем в любое удобное место и запускаем. Данная программа предназначена для создания туннеля для вашего localhost:3000, чтобы создать для него удаленный доступ по сгенерированой ссылке. Вводим в ngrok следующие команду:
npm install ngrok -g
ngrok http 3000
Видим, что программа создала туннель и теперь ваш сервер доступен по представленной ссылке. Имейте введу, что при каждом перезапуске ПК, ссылка в ngrok будет меняться.
Выше было представлено, достаточно грубое и сухое описание процесса создания простейшего NodeJs сервера, для тестирования вашего android приложения. Естественно существует масса нюансов связанных даже с теми 4-мя шагами, что я описал.
Помимо того, что я уже описал, всего одной командой можно изменить уровень доступа к api и организовать аутентификацию пользователей. Если кому то интересно — задавайте вопросы в комментариях — отвечу. Сам фреймворк имеет достаточно подробную документацию [5], в том числе стартовые главы переведены на русский (хоть и для версии 2.0 с другим набором команд)
Да примитивно, да где-то технически глупо, где-то слишком просто, но, для человека, не занимающегося серверными технологиями и нуждающегося в быстром решении для тестирования своих основных задач это решение является максимально простым и быстрым.
Автор: Foxek
Источник [6]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/node-js/290142
Ссылки в тексте:
[1] Loopback: https://loopback.io/
[2] nodejs.org/en/download: https://nodejs.org/en/download/
[3] Postman: https://www.getpostman.com/
[4] ngrok: https://ngrok.com/
[5] документацию: https://loopback.io/doc/ru/lb2/index.html
[6] Источник: https://habr.com/post/420993/?utm_campaign=420993
Нажмите здесь для печати.