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