Большинство разработчиков пишут REST API с различными методами HTTP, такими как GET, POST, PUT, DELETE и HEAD. Предположим, у нас есть микросервис, где он должен обрабатывать различные состояния и переходы, поэтому для этого он должен быть структурирован в конечном автомате. По сути, все, что нужно сделать, это определить все состояния внутри машины и описать переходы из одного состояния в другое.
Эта статья посвящена обработке различных состояний и переходов в REST API через конечный автомат javascript.
Что такое REST API
REST расшифровывается как RE презентационный S tate T ransfer.
RESTful API - это архитектурный стиль интерфейса (API) прикладной программы, который использует HTTP-запросы для доступа и использования данных. Эти данные могут использоваться для типов данных GET, PUT, POST и DELETE, которые относятся к чтению, обновлению, созданию и удалению операций, касающихся ресурсов.
Особенности REST API:
- Масштабируемость
- Гибкость и портативность
- Независимость
Принципы проектирования REST API:
- Единый интерфейс: Единый интерфейс позволяет клиенту разговаривать с сервером на едином языке, независимо от архитектурного бэкэнда того или другого.
- Клиент-сервер: слабая связь клиента и сервера, чтобы он мог развиваться индивидуально и независимо.
- Без сохранения состояния: вызовы REST API могут выполняться независимо друг от друга, они не должны полагаться на данные, хранящиеся на сервере.
- Кэширование: чтобы управлять огромным количеством входящих и исходящих вызовов, дизайн должен иметь возможность обрабатывать кэшируемые данные. Кеширование выполняется на стороне клиента.
- Многоуровневая система: несколько уровней работают вместе, чтобы построить иерархию, которая обеспечивает более масштабируемое и гибкое приложение.
- Код по запросу: он позволяет передавать код или апплет через API для использования в приложении.
что такое государственная машина?
Диаграмма конечного автомата моделирует поведение отдельного объекта, определяя последовательность событий, через которые объект проходит в течение своего времени существования в ответ на события.
Диаграмма конечного автомата состоит из:
- состояния
- Переходы
Предположим, вашему сервису нужен выделенный ресурс для запуска определенного приложения, этот ресурс может быть докер-контейнером.
диаграмма конечного автомата для создания ресурса:
Архитектура:
Состояния:
- Инициализация: начальное состояние ресурса
- В очереди: состояние ресурса, когда он находится в очереди.
- Создано: ресурс создан
- Запуск: ресурс в рабочем режиме.
- Остановка: в случае сбоя остановите ресурс.
- Остановлено: ресурс очищен
Переходы:
- Первоначально ресурс находится в состоянии инициализации, он может перейти в состояние «Остановлен» или «Поставлен в очередь».
- После постановки в очередь он может перейти в состояние «Создано» или «Остановлено».
- После создания возможен переход «Выполняется» или «Остановлен».
- После выполнения возможный переход останавливается в случае сбоя.
библиотека npm для работы с конечным автоматом: javascript-state-machine
const StateMachine = require('javascript-state-machine'); let fsm = new StateMachine({ init: 'Initializing', transitions: [ { name: 'updateState', from: '*', to: function (n) { return n; } }, { name: 'queue', from: 'Initializing', to: 'Queued' }, { name: 'create', from: 'Queued', to: 'Created' }, { name: 'start', from: 'Created', to: 'Running' }, { name: 'stop', from: ['Created', 'Running'], to: 'Stopping' }, { name: 'stopped', from: ['Initializing', 'Queued', 'Stopping'], to: 'Stopped' } ], methods: { onStopped: function() { console.log('State transition to Stopped') } }, data: { endState: 'Stopped', } });
События жизненного цикла: для отслеживания действий при любом переходе.
- onBeforeTransition
- onAfterTransition
- onTransition
- onEnterState
- onLeaveState
Вспомогательные методы:
- is (состояние): возвращает истину, если состояние является текущим состоянием
- can (t): возвращает истину, если переход t возможен
- transitions (): возможные переходы из текущего состояния
Полный код репозитория GitHub: state-machine
Заворачивать:
- Понимание REST API
- Возможности REST API
- Понимание государственной машины
- Диаграмма конечного автомата обработки ресурсов
- Библиотека конечного автомата Javascript и ее методы