2013-03-29 4 views
6

собственные API-интерфейсы REST Google, возвращают подробный ответ в случае ошибки, например:Повторные причины ошибки НТТР в Google Cloud Endpoints

{ 
"error": { 
    "errors": [ 
    { 
"domain": "global", 
"reason": "invalidBookshelfId", 
"message": "Invalid bookshelf ID." 
    } 
    ], 
    "code": 400, 
    "message": "Invalid bookshelf ID." 
} 
} 

В Google Cloud Endpoints для Python, это возможно, например, raise endpoints.BadRequestException('Error message'), но в дополнение к сообщению об ошибке я хотел бы вернуть «код» или «причину», как в примере выше. Есть ли способ достичь этого?

ответ

1

Код соответствует коду состояния, связанному с BadRequestException. Другие исключения: documented, например, endpoints.UnauthorizedException соответствует статусу 401. Что касается reason и domain, они устанавливаются API-интерфейсом API.

Что вы имеете в виду, что невозможно установить в message?

+1

Могут быть разные условия ошибки, связанные с одним и тем же кодом состояния HTTP. Если клиент API хочет действовать по-разному на этих условиях ошибки, как мы можем различать их? Конечно, клиент может разобрать сообщение, но он чувствует себя взломанным. Было бы лучше иметь отдельные поля для сообщения и кода ошибки/причины. – Docent

+0

Проблема заключается в том, что сообщение требует ручного анализа строк на стороне клиента, либо вынуждая его создавать исключения на своем конце, а затем обрабатывать или анализировать строки на уровне API. –