Целью лабораторной работы является знакомство с проектированием многослойной архитектуры Web-API (веб-приложений, микро-сервисов).
Приложение представляет из себя простой микросервис, реализующий CRUD на примере внутренней телефонной базы. Для работы приложения требуется запущенная БД postgresql.
В файле ./src/main/resources/application.properties
следует указать в параметре spring.datasource.username =
имя пользователя для доступа в БД, в параметре spring.datasource.password =
пароль для доступа к БД. В параметре spring.datasource.url =
необходимо указать адрес для доступа к БД, например для доступа к БД запущенной на локальном компьютере значение будет jdbc:postgresql://localhost:5432/postgresql
, для БД запущенной в docker на локальной машине значение будет jdbc:postgresql://172.17.0.1:5432/postgresql
.
Настройка базы данных осуществляется с помощью ./src/main/resources/schema.sql
. Для этого необходимо выполнить команду psql -h <адрес_БД> -p <порт_БД> -U <имя_пользователя> -d public -f "schema.sql"
.
Тестовые данные для БД находятся в ./src/main/resources/data.sql
. Для этого необходимо выполнить команду psql -h <адрес_БД> -p <порт_БД> -U <имя_пользователя> -d public -f "data.sql"
.
Также можно установить postgresql с помощью docker использую комманды docker pull postgres
для скачивания и docker run -e POSTGRES_PASSWORD=root -p 5432:5432 postgres
для запуска.
Для клонирования репозитория необходимо выполнить команду git clone https://github.com/delock1/lab1.git
или же скачать zip-архив и распаковать его.
Сборка приложения осуществляется при помощи автоматической системы сборки проектов Maven. Для сборки необходимо выполнить команду mvn package -Dmaven.test.skip=true
(с пропуском тестирования) находясь в директории проекта. После окончания выполнения команды появится папка target
в которой находится скомпилированный код и файл apilab-1.0.jar
.
Для сборки Docker образа следует выполнить команду docker build -t apilab:v1 .
находясь в директории с Dockerfile
и собранным apilab-1.0.jar
.
Запуск осуществляется командой docker run -p 8080:8080 apilab:v1
, где первым указывается порт в локальной системе, а вторым порт docker.
Формат JSON:
{name: "string", department: "string ",room: integer, callnumber: integer}
curl -X GET http://127.0.0.1:8080/api/v1/persons
В ответ будет получен JSON.
curl -X GET http://127.0.0.1:8080/api/v1/persons{id}
В ответ будет получен JSON с результатом.
curl -X POST http://127.0.0.1:8080/api/v1/persons -d ‘{«name»: «Имя″, "department": "Отдел", "room": 101, "callnumber": 155}’ -H «Content-Type:application/json»
В ответ будет получен статус 200 ОК
.
curl -i -X DELETE http://127.0.0.1:8080/api/v1/persons/del/{id}
В ответ будет получен статус 204 No Content
.
curl -X GET http://127.0.0.1:8080/api/v1/status
В ответ будет получен JSON в виде {hostname: "hostname"}
.