Olá,
A minha exception está sendo retornada de forma diferente no console da API, além de ir vazia para o cliente (estou usando o postman). O que vcs acham que está ocorrendo? Pode ser a lib nova restify-clients?
pagamentos.js
//...
app.post('/pagamentos/pagamento', function(req, res){
req.assert("pagamento.forma_de_pagamento", "Forma de pagamento é obrigatória").notEmpty();
req.assert("pagamento.valor", "Valor é obrigatório e deve ser um decimal").notEmpty().isFloat();
var erros = req.validationErrors();
if(erros){
console.log("Erros de validação encontrados");
res.status(400).send(erros);
return;
}
var pagamento = req.body["pagamento"];
console.log(pagamento);
pagamento.status = 'CRIADO';
pagamento.data = new Date;
var connection = app.persistencia.connectionFactory();
var pagamentoDAO = new app.persistencia.PagamentoDAO(connection);
pagamentoDAO.salva(pagamento, function(erro, resultado){
if(erro){
console.log('Erro ao inserir no banco: ' + erro);
res.status(500).send(erro);
} else{
console.log('pagamento criado');
pagamento.id = resultado.insertId;
if(pagamento.forma_de_pagamento == 'cartao'){
var cartao = req.body['cartao'];
console.log(cartao);
var clienteCartoes = new app.servicos.clienteCartoes();
clienteCartoes.autoriza(cartao, function(exception, request, response, retorno){
//cuidado com o nome dos parametros, nao pode ser igual aos no começo da rota
if(exception){
console.log(exception);
res.status(400).send(exception);
return;
}
console.log(retorno);
res.status(201).send(retorno);
return;
});
} else{
res.location('/pagamentos/pagamento/' + pagamento.id);
var response = {
dados_do_pagamento: pagamento,
links:[
{
href: 'http://localhost:3000/pagamentos/pagamento/' + pagamento.id,
rel: 'confirmar',
method: 'PUT'
},
{
href: 'http://localhost:3000/pagamentos/pagamento/' + pagamento.id,
rel: 'cancelar',
method: 'DELETE'
}
]
}
res.status(201).json(response);
}
}
});
});
//...
clienteCartoes.js
var restify = require('restify');
var clients = require('restify-clients');
function CartoesClient(){
this._cliente = clients.createJsonClient({
url: 'http://localhost:3001',
version: '~1.0'
});
}
CartoesClient.prototype.autoriza = function(cartao, callback){
this._cliente.post('/cartoes/autoriza', cartao, callback);
}
module.exports = function(){
return CartoesClient;
}