KV Proxy API
Прямой низкоуровневый доступ к Cloudflare KV для администратора. Позволяет просматривать, редактировать и удалять ключи во всех namespaces.
Архитектура
KV API - это низкоуровневый прокси для работы с KV, используемый в админ-панели для просмотра всех ключей и манипуляции ими без группировки по интеграциям.
Admin UI (KV Management Page)
|
v
/api/core/kv (GET, PATCH, DELETE)
|
v
KVService (низкоуровневый доступ)
|
v
Cloudflare KV (все namespaces)Доступные Namespaces
CACHE- KV namespace для кэширования и флагов
API Эндпоинты
GET /api/core/kv/namespaces
Получить список всех доступных KV namespaces.
Request:
http
GET /api/core/kv/namespaces
Authorization: Bearer <token>Response (200 OK):
json
{
"namespaces": [
{
"name": "CACHE",
"id": "kv-id-123"
}
]
}GET /api/core/kv/:namespace/keys
Получить список всех ключей в namespace с пагинацией.
Parameters:
:namespace- Название namespace (CACHE)
Query Parameters:
prefix(optional) - Фильтр по префиксу (напримерsofa:)limit(optional) - Количество ключей (по умолчанию 100)cursor(optional) - Cursor для пагинации
Request:
http
GET /api/core/kv/CACHE/keys?prefix=sofa:&limit=50
Authorization: Bearer <token>Response (200 OK):
json
{
"keys": [
{ "name": "sofa:ratelimit:client123", "metadata": {} },
{ "name": "sofa:cache:contact:456", "metadata": {} }
],
"list_complete": true,
"cursor": "next-cursor"
}GET /api/core/kv/:namespace/keys/:key
Получить значение ключа.
Parameters:
:namespace- Название namespace:key- Base64-encoded ключ
Request:
http
GET /api/core/kv/CACHE/keys/c29mYTpyYXRlbGltaXQ6Y2xpZW50MTIz
Authorization: Bearer <token>Response (200 OK):
json
{
"value": { "count": 42 }
}PATCH /api/core/kv/:namespace/keys/:key
Установить значение ключа.
Parameters:
:namespace- Название namespace:key- Base64-encoded ключ
Request:
http
PATCH /api/core/kv/CACHE/keys/c29mYTpyYXRlbGltaXQ6Y2xpZW50MTIz
Authorization: Bearer <token>
Content-Type: application/json
{
"value": "{\"count\": 42}",
"ttl": 300
}Response (200 OK):
json
{
"success": true
}DELETE /api/core/kv/:namespace/keys/:key
Удалить один ключ.
Parameters:
:namespace- Название namespace:key- Base64-encoded ключ
Request:
http
DELETE /api/core/kv/CACHE/keys/c29mYTpyYXRlbGltaXQ6Y2xpZW50MTIz
Authorization: Bearer <token>Response (200 OK):
json
{
"success": true
}DELETE /api/core/kv/:namespace/keys
Удалить все ключи с определённым префиксом.
Parameters:
:namespace- Название namespace
Query Parameters:
prefix(required) - Префикс для удаления (напримерsofa:)
Request:
http
DELETE /api/core/kv/CACHE/keys?prefix=sofa:
Authorization: Bearer <token>Response (200 OK):
json
{
"success": true
}Пример использования
typescript
import axios from "axios";
const api = axios.create({
baseURL: "http://localhost:3000/api",
headers: {
Authorization: `Bearer ${token}`
}
});
async function manageKV() {
// 1. Получить список namespaces
const { data: namespaces } = await api.get("/core/kv/namespaces");
console.log("Namespaces:", namespaces);
// 2. Получить все ключи
const { data: allKeys } = await api.get("/core/kv/CACHE/keys");
console.log("All keys:", allKeys);
// 3. Получить ключи с префиксом
const { data: sofaKeys } = await api.get("/core/kv/CACHE/keys?prefix=sofa:");
console.log("Sofa keys:", sofaKeys);
// 4. Получить значение ключа
const key = Buffer.from("sofa:ratelimit:client123").toString("base64");
const { data: value } = await api.get(`/kv/CACHE/keys/${key}`);
console.log("Value:", value);
// 5. Установить значение
await api.patch(`/core/kv/CACHE/keys/${key}`, {
value: '{"count": 42}',
ttl: 300
});
console.log("Set");
// 6. Удалить один ключ
await api.delete(`/core/kv/CACHE/keys/${key}`);
console.log("Deleted single key");
// 7. Удалить все ключи с префиксом
await api.delete("/core/kv/CACHE/keys?prefix=sofa:");
console.log("Deleted all sofa keys");
}Дополнительно
- Cache API - Управление KV (высокоуровневый с группировкой)
- D1 Proxy API - Прямой доступ к D1
- Secrets API - Управление секретами