Цель: научиться писать RESTful API микросервисы
База (postgres)
Host: postgres.finance.svc.k8s.dldevel
Port: 5432
Name: postgresdb
User: postgresadmin
Password: admin123
написать сервис, у которого будут методы:
- нанять сотрудника (201 сreated при успешном выполнении)
employees.employee_add(
_id integer,
_name varchar,
_last_name varchar,
_patronymic varchar,
_phone varchar,
_position varchar,
_good_job_count integer
)
- уволить сотрудника
employees.employee_remove(_id integer)
- изменить личные данные сотрудника
employees.employee_upd(
_id integer,
_name varchar,
_last_name varchar,
_patronymic varchar,
_phone varchar,
_position varchar,
_good_job_count integer
)
- получить всех сотрудников
employees. get_all(_id integer)
- получить сотрудника по его ID
employees.employee_get(_id integer)
Условия:
- структура проекта – mvc https://ru.wikipedia.org/wiki/Model-View-Controller
- ошибки необходимо возвращать по стандарту rfc7807
- у каждого метода путь должен начинаться с префикса /api/v1
- все методы должны быть закрыты авторизационным миддлваром, проверяющим наличие права "world"
- методы, принимающие в запросе JSON должны иметь миддлвар проверяющий Content-Type. передавать должны только json
- метод 4) должен иметь accept миддлвар, отдающий xml или json
- метод 5) должен принимать employeeId через path-параметр (http://localhost:8000/api/v1/{employeeId}). для этого иожно использовать библиотеку https://github.com/gorilla/mux
- при запросах в БД необходимо передавать контекст запроса (r.Context()). Если клиент сервиса перестал ожидать ответ, запрос в базу должен прекращаться
Добавить технический метод GET /tech/info, который вернет JSON с информацией о приложении:
{
"name": "employees",
"version": "1.0.0"
}
Вспомогательная литература:
- Building RESTful Web services with Go.pdf
- The_Ultimate_Guide_To_Building_Database-Driven_Apps_with_Go.pdf
- Clean_Code.pdf