docs: update README and docs with strict Quick Start (docker-compose-prod), fix WebSocket paths, enforce strict tone
This commit is contained in:
36
docs/api.md
36
docs/api.md
@@ -16,7 +16,7 @@
|
||||
|
||||
LogBoard+ предоставляет REST API и WebSocket API для работы с логами Docker контейнеров. API разработан для интеграции с системами мониторинга и автоматизации, а также для создания собственных клиентов.
|
||||
|
||||
### 🎯 **Применение API**
|
||||
### Применение API
|
||||
|
||||
- **Интеграция с CI/CD** - автоматический мониторинг логов в пайплайнах
|
||||
- **Собственные дашборды** - создание кастомных интерфейсов мониторинга
|
||||
@@ -108,7 +108,7 @@ Authorization: Bearer <token>
|
||||
|
||||
### Контейнеры и сервисы
|
||||
|
||||
#### GET /api/services
|
||||
#### GET /api/containers/services
|
||||
|
||||
Получение списка всех контейнеров.
|
||||
|
||||
@@ -122,7 +122,7 @@ Authorization: Bearer <token>
|
||||
**Пример запроса:**
|
||||
|
||||
```bash
|
||||
curl -X GET "http://localhost:9001/api/services?projects=myproject&include_stopped=true" \
|
||||
curl -X GET "http://localhost:9001/api/containers/services?projects=myproject&include_stopped=true" \
|
||||
-H "Authorization: Bearer YOUR_TOKEN"
|
||||
```
|
||||
|
||||
@@ -157,7 +157,7 @@ curl -X GET "http://localhost:9001/api/services?projects=myproject&include_stopp
|
||||
]
|
||||
```
|
||||
|
||||
#### GET /api/projects
|
||||
#### GET /api/containers/projects
|
||||
|
||||
Получение списка всех проектов Docker Compose.
|
||||
|
||||
@@ -268,7 +268,7 @@ curl -X GET "http://localhost:9001/api/logs/abc123def456?tail=100&since=2024-01-
|
||||
}
|
||||
```
|
||||
|
||||
#### GET /api/excluded-containers
|
||||
#### GET /api/containers/excluded
|
||||
|
||||
Получение списка исключенных контейнеров.
|
||||
|
||||
@@ -283,7 +283,7 @@ curl -X GET "http://localhost:9001/api/logs/abc123def456?tail=100&since=2024-01-
|
||||
}
|
||||
```
|
||||
|
||||
#### POST /api/excluded-containers
|
||||
#### POST /api/containers/excluded
|
||||
|
||||
Обновление списка исключенных контейнеров.
|
||||
|
||||
@@ -306,7 +306,7 @@ curl -X GET "http://localhost:9001/api/logs/abc123def456?tail=100&since=2024-01-
|
||||
}
|
||||
```
|
||||
|
||||
#### POST /api/snapshot
|
||||
#### POST /api/logs/snapshot
|
||||
|
||||
Создание снимка логов.
|
||||
|
||||
@@ -374,7 +374,7 @@ ok
|
||||
|
||||
Все WebSocket endpoints требуют JWT токен в параметре `token`.
|
||||
|
||||
### ws://host:port/ws/logs/{container_id}
|
||||
### ws://host:port/api/websocket/logs/{container_id}
|
||||
|
||||
Получение логов отдельного контейнера.
|
||||
|
||||
@@ -390,7 +390,7 @@ ok
|
||||
```javascript
|
||||
const token = "your-jwt-token";
|
||||
const containerId = "abc123def456";
|
||||
const ws = new WebSocket(`ws://localhost:9001/ws/logs/${containerId}?token=${token}&tail=100`);
|
||||
const ws = new WebSocket(`ws://localhost:9001/api/websocket/logs/${containerId}?token=${token}&tail=100`);
|
||||
|
||||
ws.onmessage = function(event) {
|
||||
console.log('Получены логи:', event.data);
|
||||
@@ -401,7 +401,7 @@ ws.onerror = function(error) {
|
||||
};
|
||||
```
|
||||
|
||||
### ws://host:port/ws/fan/{service_name}
|
||||
### ws://host:port/api/websocket/fan/{service_name}
|
||||
|
||||
Получение логов сервиса (все реплики).
|
||||
|
||||
@@ -416,14 +416,14 @@ ws.onerror = function(error) {
|
||||
```javascript
|
||||
const token = "your-jwt-token";
|
||||
const serviceName = "web";
|
||||
const ws = new WebSocket(`ws://localhost:9001/ws/fan/${serviceName}?token=${token}&tail=100`);
|
||||
const ws = new WebSocket(`ws://localhost:9001/api/websocket/fan/${serviceName}?token=${token}&tail=100`);
|
||||
|
||||
ws.onmessage = function(event) {
|
||||
console.log('Логи сервиса:', event.data);
|
||||
};
|
||||
```
|
||||
|
||||
### ws://host:port/ws/fan_group
|
||||
### ws://host:port/api/websocket/fan_group
|
||||
|
||||
Получение логов группы сервисов.
|
||||
|
||||
@@ -438,7 +438,7 @@ ws.onmessage = function(event) {
|
||||
```javascript
|
||||
const token = "your-jwt-token";
|
||||
const services = "web,db,redis";
|
||||
const ws = new WebSocket(`ws://localhost:9001/ws/fan_group?services=${services}&token=${token}&tail=100`);
|
||||
const ws = new WebSocket(`ws://localhost:9001/api/websocket/fan_group?services=${services}&token=${token}&tail=100`);
|
||||
|
||||
ws.onmessage = function(event) {
|
||||
console.log('Логи группы сервисов:', event.data);
|
||||
@@ -522,7 +522,7 @@ def login(username, password):
|
||||
# Получение списка контейнеров
|
||||
def get_containers(token):
|
||||
headers = {"Authorization": f"Bearer {token}"}
|
||||
response = requests.get(f"{BASE_URL}/api/services", headers=headers)
|
||||
response = requests.get(f"{BASE_URL}/api/containers/services", headers=headers)
|
||||
return response.json()
|
||||
|
||||
# Получение логов контейнера
|
||||
@@ -563,7 +563,7 @@ class LogBoardAPI {
|
||||
if (projects) params.append('projects', projects);
|
||||
if (includeStopped) params.append('include_stopped', 'true');
|
||||
|
||||
const response = await fetch(`${this.baseUrl}/api/services?${params}`, {
|
||||
const response = await fetch(`${this.baseUrl}/api/containers/services?${params}`, {
|
||||
headers: this.headers
|
||||
});
|
||||
return await response.json();
|
||||
@@ -592,7 +592,7 @@ class LogBoardAPI {
|
||||
// WebSocket для live-логов
|
||||
createLogsWebSocket(containerId, tail = 100) {
|
||||
const ws = new WebSocket(
|
||||
`ws://${this.baseUrl.replace('http://', '')}/ws/logs/${containerId}?token=${this.token}&tail=${tail}`
|
||||
`ws://${this.baseUrl.replace('http://', '')}/api/websocket/logs/${containerId}?token=${this.token}&tail=${tail}`
|
||||
);
|
||||
return ws;
|
||||
}
|
||||
@@ -654,12 +654,12 @@ echo "Токен получен: ${TOKEN:0:20}..."
|
||||
|
||||
# Получение списка контейнеров
|
||||
echo "Получение списка контейнеров..."
|
||||
curl -s -X GET "$BASE_URL/api/services" \
|
||||
curl -s -X GET "$BASE_URL/api/containers/services" \
|
||||
-H "Authorization: Bearer $TOKEN" \
|
||||
| jq '.[] | {name: .name, status: .status, project: .project}'
|
||||
|
||||
# Получение логов первого контейнера
|
||||
CONTAINER_ID=$(curl -s -X GET "$BASE_URL/api/services" \
|
||||
CONTAINER_ID=$(curl -s -X GET "$BASE_URL/api/containers/services" \
|
||||
-H "Authorization: Bearer $TOKEN" \
|
||||
| jq -r '.[0].id')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user