Komunikaty błędów
Opis rozdziału
Zgodnie z filozofią REST usługa API o błędzie informuje zwracając odpowiedni kod odpowiedzi HTTP z rodziny 4xx lub 5xx. Wyjątkiem są wywołania JSONP lub prośba o opakowanie odpowiedzi (parametr sterujący envelope). Dokładna informacja o błędzie znajduje się w ciele odpowiedzi usługi API - w niniejszym rozdziale można znaleźć listę wszystkich obsługiwanych błędów.
Struktura odpowiedzi z błędem
HTTP/1.1 500 Internal Server Error
Date: Wed, 26 Mar 2014 11:27:42 GMT
Server: Apache
{
"code": "Kod błędu"
"message": "Tekstowy komunikat z błędem (w języku polskim)"
"category": "Kategoria, do której zalicza się błąd",
"attributes": "Dodatkowe atrybuty opisujące błąd",
"source": "Źródło/Element, który wywołał błąd",
"children": "Błędy wchodzące w skład głównego"
}
Atrybuty:
- code
- message
- category
Przykłady błędnych zapytań
Problem: Brak nagłówka 'Authorization', przez co użytkownik nie może być autoryzowany.
Zapytanie:
GET /v1/domains/demo.kei.pl HTTP/1.1
Host: as27.kei.pl
Accept: */*
X-Forwarded-For: 94.152.201.90
Content-Type: application/json
Odpowiedź:
HTTP/1.1 401 Internal Server Error
Date: Wed, 26 Mar 2014 11:27:42 GMT
Server: Apache
:
Content-Length: 200
Connection: close
Content-Type: application/json
Problem: Próba dodania nowego konta o nieprawidłowej nazwie.
Zapytanie:
POST /v1/domains/demo.kei.pl HTTP/1.1
Host: as27.kei.pl
Accept: */*
X-Forwarded-For: 94.152.201.90
Content-Type: application/json
Authorization: Basic cG9zdG1hc3RlckBkZW1vLmtlaS5wbDpmODhlMWJmZTA4M2M5MjljOTQxMzJjMzA4NjY1MWJiMjFkMWZiNmY1
{
"description":"opis nowego konta email",
"password":"Haslo12",
"password_retype":"Haslo12"
}
Odpowiedź:
HTTP/1.1 500 Internal Server Error
Date: Wed, 26 Mar 2014 11:27:42 GMT
Server: Apache
:
Content-Length: 200
Connection: close
Content-Type: application/json
{
"code": "500.301"
"message": "Nieprawidłowa nazwa konta pocztowego"
"category": "validation"
}
Legenda
Kod HTTP
Kod HTTP.Kod wewnętrzny API ('code')
Kategoria ('category')
Lista błędów
500
500
internal
500
500.100
internal
500
500.101
internal
400
400.1
internal
503
503.1
internal
404
404.1
resource_missing
404
404.2
resource_missing
400
400.1
internal
400
400.2
internal
405
405.1
internal
501
501.1
internal
401
401.1
authorization
403
403.1
authorization
403
403.2
authorization
500
500.110
internal
500
500.111
internal
500
500.112
internal
500
500.115
internal
500
500.116
internal
500
500.117
internal
500
500.118
internal
500
500.119
internal
500
500.120
internal
409
409.1
resource_existing
404
404.4
resource_missing
500
500.130
validation
500
500.131
validation
403
403.3
authorization
401
401.1
internal
500
500.202
internal
500
500.203
internal
500
500.204
internal
500
500.205
internal
500
500.206
internal
500
500.301
validation
500
500.302
validation
500
500.303
validation
500
500.304
validation
500
500.305
validation
500
500.306
validation
500
500.311
validation
500
500.312
validation
500
500.313
validation
500
500.314
validation
500
500.315
validation
500
500.316
validation
500
500.317
validation
500
500.321
validation
500
500.322
validation
500
500.323
validation
500
500.324
validation
500
500.325
validation
500
500.326
validation
500
500.327
validation
500
500.331
validation
500
500.332
validation
500
500.351
validation
500
500.352
validation
500
500.353
validation
500
500.361
validation
500
500.362
validation
500
500.363
validation
500
500.364
validation
500
500.365
validation
500
500.366
validation
500
500.367
validation
500
500.368
validation