Lỗi & Xử lý lỗi
Mã trạng thái HTTP, định dạng phản hồi lỗi, và cách khôi phục từ các lỗi phổ biến.
Lỗi & Xử lý lỗi
Synapse sử dụng các mã trạng thái HTTP chuẩn với định dạng phản hồi lỗi nhất quán. Trang này giải thích cách diễn giải và khôi phục từ lỗi.
Định dạng phản hồi lỗi
Tất cả lỗi trả về JSON với cấu trúc sau:
{
"statusCode": 401,
"error": "Unauthorized",
"message": "Mind Key fehlt oder ungültig.",
"docs": "https://synapse.schaefer.zone/docs/getting-started/authentication"
}| Trường | Mô tả |
|---|---|
statusCode |
Mã trạng thái HTTP |
error |
Tên trạng thái HTTP |
message |
Mô tả lỗi dành cho người đọc |
docs |
URL tới tài liệu liên quan (khi áp dụng) |
Mã trạng thái HTTP
200 OK
Thành công. Yêu cầu được xử lý đúng.
201 Created
Thành công. Một tài nguyên mới được tạo (ví dụ POST /memory).
204 No Content
Thành công. Không có body trả về (ví dụ DELETE /memory/:id).
400 Bad Request
Yêu cầu sai định dạng. Nguyên nhân phổ biến:
- Thiếu trường JSON bắt buộc
- Cú pháp JSON không hợp lệ
- Giá trị enum không hợp lệ (ví dụ sai danh mục)
{
"statusCode": 400,
"error": "Bad Request",
"message": "category must be one of: identity, preference, fact, project, skill, mistake, context, note, credentials"
}Khắc phục: Kiểm tra body yêu cầu so với tài liệu API. Đảm bảo tất cả trường bắt buộc đều có và có giá trị hợp lệ.
401 Unauthorized
Xác thực thất bại. Nguyên nhân phổ biến:
- Thiếu header
Authorization - Mind Key hoặc JWT không hợp lệ
- Sử dụng Mind Key nơi yêu cầu JWT (hoặc ngược lại)
{
"statusCode": 401,
"error": "Unauthorized",
"message": "Mind Key fehlt oder ungültig.",
"docs": "https://synapse.schaefer.zone/docs/getting-started/authentication"
}Khắc phục: Xác minh token của bạn. Xem Xác thực.
403 Forbidden
Bạn đã được xác thực nhưng không được phép thực hiện hành động này. Nguyên nhân phổ biến:
- Cố xóa mind của người dùng khác
- Cố xác minh bộ nhớ bằng Mind Key (yêu cầu JWT)
- Mind bị vô hiệu hóa
Khắc phục: Kiểm tra xem bạn có đang sử dụng đúng loại token cho endpoint này không.
404 Not Found
Đường dẫn hoặc tài nguyên yêu cầu không tồn tại.
{
"statusCode": 404,
"error": "Not Found",
"message": "Route GET /memory/list not found",
"docs": "https://synapse.schaefer.zone/docs/api/errors"
}Khắc phục: Gọi GET /endpoints để xem danh sách endpoint hợp lệ. So sánh
URL của bạn với danh sách từng ký tự.
409 Conflict
Yêu cầu xung đột với trạng thái hiện tại. Nguyên nhân phổ biến:
- Cố đăng ký với email đã tồn tại
- Trùng URL webhook
Khắc phục: Sử dụng giá trị khác, hoặc dùng PUT để cập nhật tài nguyên hiện có.
429 Too Many Requests
Bạn đã đạt giới hạn tốc độ. Chỉ áp dụng cho xác thực qua tham số ?key= (60/phút).
{
"statusCode": 429,
"error": "Too Many Requests",
"message": "Rate limit exceeded. Use Authorization header for unlimited access."
}Header phản hồi:
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 0
Retry-After: 42Khắc phục: Chuyển sang header Authorization: Bearer (không giới hạn tốc
độ), hoặc đợi Retry-After giây.
500 Internal Server Error
Lỗi server. Điều này không nên xảy ra — nếu xảy ra, đó là bug.
Khắc phục:
- Thử lại với exponential backoff (1s, 2s, 4s, 8s)
- Kiểm tra
GET /healthđể xem server có hoạt động không - Nếu liên tục, báo cáo lỗi
503 Service Unavailable
Server tạm thời ngừng (ví dụ trong quá trình triển khai, di chuyển database).
Khắc phục: Đợi và thử lại. Kiểm tra GET /health.
Mẫu khôi phục
Thử lại với exponential backoff
import time
import requests
def call_with_retry(url, max_retries=3):
for attempt in range(max_retries):
try:
r = requests.get(url, headers={"Authorization": f"Bearer {KEY}"})
if r.status_code == 429:
wait = int(r.headers.get("Retry-After", 60))
time.sleep(wait)
continue
if r.status_code >= 500:
time.sleep(2 ** attempt)
continue
return r
except requests.RequestException:
time.sleep(2 ** attempt)
raise Exception(f"Failed after {max_retries} retries")Xử lý lỗi xác thực
def safe_call(url, key):
r = requests.get(url, headers={"Authorization": f"Bearer {key}"})
if r.status_code == 401:
# Mind Key invalid — alert user
raise AuthError("Mind Key invalid or expired")
return rKịch bản lỗi phổ biến
"Mind Key fehlt oder ungültig"
- Bạn quên header
Authorization - Bạn dùng
?key=nhưng key sai - Bạn đang dùng JWT nơi yêu cầu Mind Key
"Route not found"
- Bạn đã đoán một đường dẫn không tồn tại
- Bạn dùng sai verb (ví dụ
GET /memorythay vìPOST /memory) - Kiểm tra
GET /endpointsđể xem đường dẫn hợp lệ
"Rate limit exceeded"
- Bạn đang dùng
?key=và vượt quá 60 yêu cầu/phút - Chuyển sang header
Authorization: Bearer