Инструменты пользователя

Инструменты сайта


doc:1605:643.mgul.16051-01_32_01

АННОТАЦИЯ

В данном программном документе приведено руководство системного программиста по установке и настройке программы «Программный интерфейс взаимодействия системы отображения метеорологических данных с базой данных измерительной информации», предназначенной для передачи системе отображения метеорологической информации из базы данных.

Общие сведения о системе

Программный интерфейс входит в состав системы отображения метеорологических данных МФ МГТУ им. Н.Э. Баумана. Основные функции программного интерфейса состоят в получении, передачи и обработке метеорологической информации в формате JSON.

Структура системы

Программный интерфейс состоит из двух частей: программного интерфейса REST(порт 3000) и программного интерфейса GraphQL(порт 4000). Они круглосуточно работают на сервере, ожидая HTTP-запрос метода GET. При получении нового запроса происходит его обработка, согласно заранее определенному сценарию. Программный интерфейс в ходе своей работы использует Redis - резидентную систему управления базами данных NoSQL, работающую со структурами данных «ключ-значение». Redis работает на порте 6379.

Программные зависимости

Для функционирования программного интерфейса необходимо инсталлировать резидентную систему управления базами данных класса NoSQL Redis версии 6.0.1. Также необходимо установить программную платформу Node.js версии 12.16.3, а также ряд npm-пакетов и модулей:

  • express - фреймворк для языка JavaScript
  • redis - модуль, работающий с базой данных Redis
  • fs - модуль, позволяющий работать с файловой системой сервера
  • request - модуль, необходимый для осуществления отправки асинхронных запросов
  • http-errors - модуль обработчика HTTP-ошибок
  • path - модуль, помогающий определить путь файла в файловой системе
  • cookie-parser - модуль обработчика cookie-файлов
  • morgan - модуль, позволяющий осуществлять логирование и вести системный журнал, в случае неполадок и критических ошибок
  • moment - модуль, предоставляющий функции для работы со временем
  • graphql - модуль, предоставляющий возможность проектирования, используя архитектуру GraphQL
  • express-graphql - модуль, связывающий фреймворк express и graphql
  • fetch - модуль для отправки асинхронных запросов

Все вышеперечисленные можно установить по-отдельности с помощью команды:

$ npm install "имя пакета"

Также все программные зависимости можно установить одной командой. Данный процесс описан в разделе «Установка программного интерфейса на сервер».

Все вышеописанное программное обеспечение необходимо устанавливать на операционные системы семейства Linux и Windows. При использовании Windows единственным ограничением будет необходимое использование операционной системы Windows 7 или выше.

Установка программного интерфейса на сервер

Установка NO-SQL базы данных Redis

Сначала необходимо установить кэширующее средство Redis. Для этого:

  1. Обновим пакет apt:
$ sudo apt update

2. Установим пакет build-essential:

$ sudo apt-get install build-essential

3. Установим Redis:

$ sudo apt install redis-server

4. Перезагрузим Redis:

$ sudo systemctl restart redis.service

5. Поставим автозапуск сервера Redis при запуске сервера:

$ sudo systemctl enable redis.service

6. Проверим работу Redis:

$ redis-cli

7. Введем команду:

$ ping

В результате должно вывестись сообщение «PONG», что будет означать успешную установку Redis

Установка Node.js

1. Установим сам Node.js:

$sudo apt install nodejs 

2. Установим менеджер пакетов:

$sudo apt install npm 

Установка программных зависимостей

Для установки ранее описанных программных зависимостей необходимо создать файл package.json, находящийся в приложении 1 данного программного документа, после чего, поместив его в директорию проекта, ввести команду:

$npm install

Все необходимые программные зависимости установятся одной командой.

Настройка программного интерфейса

Для настройки программного интерфейса необходимо скачать архив программных документов, который находится в программном документе «Текст программы». Необходимо перенести папку «routes» в корневую папку проекта, после чего объявить использование в основном файле проекта:

app.use('/Rest',restRouter)
app.use('/GraphQL',GraphQLRouter)

Также допустимо и отчасти рекомендуется использовать GraphQL явно, вставляя его в основной файл Express-приложения для большего быстродействия, без добавления в папку routes.

Проверка работоспособности

Для проверки работоспособности программного интерфейса необходимо проверить работоспособность интерфейсов REST и GraphQL. Для этого необходимо отправить два запроса:

  • Запрос для GraphQL-API:
 http://название_домена:4000/graphql?query={calibr(time:"day",date:"2019-04-04",uname:"РОСА-П",serial:"01")} 
  • Запрос для REST-API:
 http://название_домена:3000/api/calibr/day/2019-04-04/РОСА-П/01 

В результате должны прийти идентичные данные, содержащие откалиброванную метеорологическую информацию за 2019-04-04 с прибора «РОСА-П», имеющего серийный номер «01».

Сообщения системному программисту

Сообщение Причины Действия системного программиста
404 Error Сервер, на котором функционирует программный интерфейс, выключен, либо не функционирует корректно. Запрос, отправленный серверу, не соответствует языкам запросов, описанных в руководстве программиста Проверить работоспособность сервера, при необходимости перезагрузить его. В случае, если сервер работает исправно, еще раз проверить запрос на предмет ошибок и опечаток, после чего повторить запрос. При необходимости переустановить программный интерфейс.
Redis connection failed База данных Redis, необходимая для работы программного интерфейса, либо выключена, либо работает неисправно. Проверить запущена ли база данных Redis. В случае повторного возникновения данного сообщения перезагрузить ее, или переустановить, при необходимости.

Приложение 1

Файл package.json

{
  "name": "diplom",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "cookie-parser": "~1.4.4",
    "debug": "~2.6.9",
    "express": "~4.16.1",
    "express-graphql": "^0.9.0",
    "fetch": "^1.1.0",
    "graphql": "^15.0.0",
    "http-errors": "~1.6.3",
    "moment": "^2.24.0",
    "morgan": "~1.9.1",
    "node-fetch": "^2.6.0",
    "node-jq": "^1.11.0",
    "pug": "2.0.0-beta11",
    "redis": "^2.8.0",
    "request": "^2.88.0",
  }
}
doc/1605/643.mgul.16051-01_32_01.txt · Последние изменения: 2020/06/23 12:59 — kostylev