Estou desenvolvendo um projeto que tem um cliente mobile, que se comunica por meio de ApiRest com o backend em Django. Foi solicitado pelo desenvolvedor que eu retorne os erros contendo mais informações além do tipo do erro, como por exemplo o arquivo que ocorreu o erro, a linha, o método e a classe, daí pensei em adicionar no retorno um dicionário, contendo os dados solicitados.
Eu estou fazendo da seguinte forma:
class CustomException(Exception):
def __init__(self, error_file, error_method, error_line, error_message, *args):
data = {
"error_file": error_file,
"error_line": error_line,
"error_method": error_method
}
args += (data, error_message)
super(CustomException, self).__init__(*args)
O retorno quando levanto a exception está assim:
{
"code": "500",
"error": "gerar_pix",
"error_description": "(
{'error_file': 'arquivo_xpto.py', 'error_line': 203, 'error_method': 'gerar_pix'},
'Mensagem amigável de erro')"
}
Eu não queria o dicionário (data) no error_description eu gostaria de retornar assim:
{
"code": "500",
"error": "gerar_pix",
"error_description": "Mensagem amigável de erro",
"error_data": {
'error_file': 'arquivo_xpto.py',
'error_line': 203,
'error_method': 'gerar_pix'
}
}
É possível fazer isso, qual seria o caminho?