2016-01-22 4 views
0

Я борется с поднятием плохой просьбы в api, которая возвращает json. Идея такова:Поднять плохой запрос json

if True: 
    raise BadRequest({'error_message' : 'stuff', 
         'suggestions' : 'other stuff'}) 

ясно, что это не будет работать, но я не уверен, если это противоречит логике вернуть JSON с плохим запросом.

ответ

1

Вы используете понятия «возврат» и «рейз» в запутанном виде. Они имеют очень точные значения.

Вы можете только поднять подкласс Exception. Путь выполнения программы после оператора «raise» следует правилам обработки исключений Python. Функция, которая вызывает исключение, не возвращается. Вы можете создать подкласс Exception, где аргумент является словарем, как в вашем примере. Это будет похоже на объект JSON, но он все равно должен быть подклассом Exception, если вы хотите использовать его в выражении raise.

Вы можете «вернуть» любой объект из функции. Путь выполнения программы соответствует правилам вызовов функций Python и возвращает их. Возвращаемым объектом может быть объект JSON, а содержимое объекта может быть сообщением об ошибке. Но если ваша функция возвращает этот тип объекта, ваш клиентский код должен проверить этот объект, чтобы определить, что произошла ошибка.

Смежные вопросы