Внедрите Rest API для финансового учреждения, где он предоставляет своим партнёрам услуги электронного кошелька. У него есть два типа учетных записей электронного кошелька: идентифицированные и неидентифицированные. API может поддерживать несколько клиентов, и следует использовать только методы http, post с json в качестве формата данных. Клиенты должны быть аутентифицированы через http параметр заголовок X-UserId и X-Digest. X-Digest — это hmac-sha1, хэш-сумма тела запроса. Должны быть предварительно записанные электронные кошельки, с разными балансами, а максимальный баланс составляет 10.000 сомони для неидентифицированных счетов и 100.000 сомони для идентифицированных счетов. Для хранения данных можете использовать по вашему выбору. API методы сервиса: 1. Проверить существует ли аккаунт электронного кошелька. 2. Пополнение электронного кошелька. 3. Получить общее количество и суммы операций пополнения за текущий месяц. 4. Получить баланс электронного кошелька. Во время разработки используйте git и Github и делайте значимые коммиты.
Golang, PostgreSQL, Redis
Postgres и Redis запускаются в Docker, поэтому предполагается, что он установлен на машине.
Для сборки выполните команду make
$ make
...
Для запуска выполните команду
./wallet
POST /login
Отправить
{
"email": "email"
}
В случае успеха, отправляет 200 OK
HTTP/1.1 200 OK
Content-Length: 0
Content-Type: application/json; charset=utf-8
Date: Thu, 16 Mar 2023 08:52:21 GMT
X-Userid: <X-Userid>
HEAD http://localhost:8080/alif/wallets/{id}
X-Userid: <X-Userid>
GET http://localhost:8080/alif/wallets/{id}
X-Userid: <X-Userid>
Ответ
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Date: Thu, 16 Mar 2023 09:00:04 GMT
Content-Length: 41
Connection: close
{
"is_identified": bool,
"balance": int (diram)
}
GET http://localhost:8080/alif/wallets/{id}/replenishments/{month}
X-Userid: <X-Userid>
Ответ
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Date: Thu, 16 Mar 2023 09:03:14 GMT
Content-Length: 49
Connection: close
{
"total_replenishments": int,
"total_amount": int (diram)
}
PUT http://localhost:8080/alif/wallets/{id}
X-Userid: <X-Userid>
X-Digest: <X-Digest>
{
"balance": string
}
X-Digest — HMAC-SHA1 сумма тела запроса в шестнадцатеричной кодировке.