Web-интерфейс
(REST API
) для управления LIFO
(Last In First Out
- стэк), написанный на go
.
WebLiFo
REST API
оперирует ресурсом lifo
- /api/lifo
- наименование (название стэка) - поле
name
(string
); - описание (краткая характеристика) - поле
description
(string
) - размер (глубина)
lifo
в ячейках -size
; - элементы стека -
item
тип данных (т.е. то что находится в ячейкеLIFO
) -[]byte
- мы не задаем ограничения элементов стэка по размеру, т.е. элементами стэка могут быть слайсы байт произвольной длины (размера);
- данные будут храниться в таблицах БД (
Postgres
), мы предполагаем, что данные будут небольшими (не более нескольких кБ), поэтому мы храним их напрмую в колонке БД, в случае если предполагается, что размер данных большой, необходимо использоватьSTREAM
; - для обеспечения возможности добавления извлечения элементов из стэка без необходимости индексировать
все элементы они будут храниться в виде односвязного списка т.е. у каждого
item
будет колонкаpreviuos_item_id
(у верхнего будет NULL), поэтому при извлечении/добавлении нового элемента в стэк потребуется отредактировать только 1 элемент из таблицыitems
.
GET /api/lifo
- возвращает коллекцию метаинформации (безitems
) стэков (без элементов)GET /api/lifo/{id}
- возвращает метаинформацию по стэку по идентификатору{id}
GET /api/lifo/{id}/items
- возвращает стэк со всеми его элементамиPOST /api/lifo
- создает новый пустой стэк;PUT /api/lifo/{id}
- редактирует метаинформацию стэка;DELETE /api/lifo/{id}
- удаляет стэк со всеми его элементами;POST /api/lifo/flush
- выполняет очистку стэка (удаляет его элементы);POST /api/lifo/{id}/push
- добавляет элемент в стэк с идентификатором{id}
;POST /api/lifo/{id}/pop
- извлекает элемент из стэка с идентификатором{id}
.
- Запуск с предварительной сборкой (пересборкой образов)
docker-compose up --build
- Удаление ранее собранных образов
docker-compose down
Доступ к Web API можно осуществить по flhtce: localhost:8765