go-broker-test/README.md

93 lines
2.6 KiB
Markdown
Raw Normal View History

2025-05-07 00:25:34 +03:00
## Настройка и запуск
1. **Сборка и запуск сервисов (API Server и Worker):**
```bash
docker-compose up --build
```
## Примеры API запросов (cURL)
### 1. Отправка (POST /trades)
* **Успешный запрос:**
```bash
curl -X POST -H "Content-Type: application/json" -d '{
"account": "ACC001",
"symbol": "EURUSD",
"volume": 1.5,
"open": 1.0750,
"close": 1.0780,
"side": "buy"
}' http://localhost:8080/trades
```
Ожидаемый ответ: `HTTP/1.1 200 OK` (без тела ответа, если не изменено).
* **Запрос с ошибкой валидации (неверный формат symbol):**
```bash
curl -X POST -H "Content-Type: application/json" -d '{
"account": "ACC002",
"symbol": "eurusd_invalid",
"volume": 0.5,
"open": 1.1200,
"close": 1.1250,
"side": "sell"
}' http://localhost:8080/trades
```
Ожидаемый ответ: `HTTP/1.1 400 Bad Request` (с телом ошибки, описывающим проблему валидации).
* **Запрос с отсутствующим обязательным полем (например, account):**
```bash
curl -X POST -H "Content-Type: application/json" -d '{
"symbol": "GBPUSD",
"volume": 1.0,
"open": 1.2600,
"close": 1.2650,
"side": "buy"
}' http://localhost:8080/trades
```
Ожидаемый ответ: `HTTP/1.1 400 Bad Request`.
### 2. Получение статистики (GET /stats/{acc})
* **Для существующего аккаунта (после обработки заявок Worker'ом):**
Замените `{ACC001}` на реальный ID аккаунта.
```bash
curl -X GET http://localhost:8080/stats/ACC001
```
Ожидаемый ответ (пример):
```json
{
"account": "ACC001",
"trades": 1,
"profit": 450.00
}
```
* **Для несуществующего аккаунта или аккаунта без сделок:**
```bash
curl -X GET http://localhost:8080/stats/UNKNOWN_ACC
```
Ожидаемый ответ:
```json
{
"account": "UNKNOWN_ACC",
"trades": 0,
"profit": 0
}
```
### 3. Проверка состояния сервиса (GET /healthz)
```bash
curl -X GET http://localhost:8080/healthz
2025-05-05 22:58:06 +00:00
```
2025-05-07 00:25:34 +03:00
Ожидаемый ответ: `HTTP/1.1 200 OK` (тело ответа может быть пустым или содержать "OK").
2025-05-05 22:58:06 +00:00