Перейти к основному содержимому

Сервис

С помощью Netuno можно создавать веб-сервисы и строить любые сложные API REST для интеграции данных между системами.

Что такое веб-сервис?

Веб-сервис позволяет системам обмениваться информацией онлайн по стандартизированному протоколу. В Netuno каждый файл в server/services/ автоматически становится эндпоинтом, доступным по HTTP.

Зачем использовать веб-сервисы?​

Использование асинхронных сервисов дает очевидные преимущества для пользовательского опыта:

  • Более быстрая загрузка: сервер сразу отдает визуальную структуру страницы, не дожидаясь обработки всех данных.
  • Динамические данные по требованию: фронтенд запрашивает только необходимые данные, когда это нужно.
  • Интеграция между системами: сервис, созданный в Netuno, может использоваться любым внешним приложением (мобильным, другой веб-системой и т. д.).
  • Лучший пользовательский опыт: пользователю не нужно ждать полной обработки страницы, чтобы увидеть что-то на экране.

Предварительные требования​

Перед началом убедитесь, что:

  • Netuno установлен и запущен локально.
  • Приложение демо создано, как описано в Создание приложения.
  • Есть данные, зарегистрированные в Задачах и связанные с Записями (необходимо, чтобы возврат не был пустым).

Настройка редактора кода​

Для создания и редактирования сервисов в Netuno используйте редактор кода на ваш выбор. Мы рекомендуем Visual Studio Code, так как он бесплатный, легкий и очень интуитивный, но подойдет любой редактор, совместимый с JavaScript/Python/Groovy.

Открыть приложение демо​

  1. Откройте Visual Studio Code.
  2. Нажмите значок Файлы на левой боковой панели.
  3. Выберите Открыть папку (File > Open Folder).
  4. Перейдите в папку установки Netuno.
  5. Выберите каталог: apps/демо
  6. Нажмите Открыть.

Структура папок приложения демо загрузится на левой панели.

Создать сервис​

Сервисы обрабатываются на стороне сервера. Чтобы создать новый сервис:

  1. На панели файлов разверните структуру до папки server/services/.
  2. Щелкните правой кнопкой мыши папку services.
  3. Выберите Новый файл New File.
  4. Назовите файл в соответствии с языком, который хотите использовать:
  • server/services/работники.js
server/services/работники.js
/**
*** Преобразует данные запроса в вывод JSON.
*/
const записиБД = _db.query(`
SELECT DISTINCT
работник.имя, SUM(DATEDIFF(HOUR, запись.начало, запись.конец)) AS всего
FROM работник INNER JOIN запись
ON работник.id = запись.работник_id
WHERE работник.активен = true AND запись.активен = true
GROUP BY работник.имя
ORDER BY всего ASC
`);

const список = _val.list();

for (const записьБД of записиБД) {
список.add(
_val.map()
.set("имя", записьБД.getString("имя"))
.set("всего", записьБД.getInt("всего"))
);
}

_out.json(список);

Реализуйте сервис, добавив приведенный ниже код в созданный файл. Этот сервис запрашивает базу данных и возвращает список работников с общим количеством зарегистрированных часов в формате JSON.

Понимание кода​

Объект/МетодОписание
_db.query()Выполняет SQL-запрос и возвращает список объектов в формате ключ-значение (столбец → данные).
_val.list()Создает изменяемый список для накопления результатов.
_val.map()Создает объект сопоставления (ключ-значение) для каждой строки результата.
_out.json()Сериализует объект в JSON и отправляет ответ на HTTP-запросы.
Необходимые данные

Убедитесь, что есть данные, зарегистрированные в Задачах и связанные с Записями. Иначе эндпоинт вернет пустой список [].

Запуск и тестирование сервиса​

Когда Netuno запущен, откройте эндпоинт в браузере:

Совет для просмотра JSON

Рекомендуем Firefox для тестирования эндпоинтов прямо в браузере, так как он форматирует и отображает JSON-ответ в удобном для чтения виде с подсветкой синтаксиса. В качестве альтернативы используйте расширения, такие как JSON Viewer в Chrome, или инструменты вроде Postman для более продвинутого тестирования.

Ожидаемый ответ будет JSON, похожим на:

[
{ "имя": "Анна Силва", "всего": 12 },
{ "имя": "Карлос Мендес", "всего": 28 },
{ "имя": "Жуан Коста", "всего": 45 }
]

Следующие шаги​

Теперь, когда ваш сервис работает, вы можете:

  • 📄 Интерфейс и дизайн — интегрировать этот сервис во фронтенд приложения.
  • 📚 Библиотека сервисов — изучить объекты _db, _val, _out и другие, доступные в Netuno.
  • 🔗 Добавить аутентификацию и контроль доступа к вашему сервису.