Analisando o código, não consegui identificar onde que é passado o método a ser acionado para minha API, funciona tudo corretamente, porém não consegui identificar como a API identifica se esta efetuando uma alteração, uma inclusão. etc.?
Analisando o código, não consegui identificar onde que é passado o método a ser acionado para minha API, funciona tudo corretamente, porém não consegui identificar como a API identifica se esta efetuando uma alteração, uma inclusão. etc.?
Fala ai Ruan, beleza?
Poderia postar um código de exemplo para eu dar uma olhada?
Fico no aguardo
Opa, fala Matheus, beleza.
Segue os códigos da controller, service, do arquivo express, da api e do route que é acionado pela API
Controller
angular.module('alurapic')
.controller('FotoController', function($scope, recursoFoto, $routeParams, cadastroDeFotos) {
$scope.foto = {};
$scope.mensagem = '';
if($routeParams.fotoId) {
recursoFoto.get({fotoId: $routeParams.fotoId}, function(foto) {
$scope.foto = foto;
}, function(erro) {
console.log(erro);
$scope.mensagem = 'Não foi possível obter a foto'
});
}
$scope.submeter = function() {
if ($scope.formulario.$valid) {
cadastroDeFotos.cadastrar($scope.foto)
.then(function(dados) {
$scope.mensagem = dados.mensagem;
if (dados.inclusao) $scope.foto = {};
})
.catch(function(erro) {
$scope.mensagem = erro.mensagem;
});
}
};
});
Service
angular.module('meusServicos', ['ngResource'])
.factory('recursoFoto', function($resource) {
return $resource('/v1/fotos/:fotoId', null, {
'update': {
method: 'PUT'
}
});
})
.factory("cadastroDeFotos", function(recursoFoto, $q) {
var service = {};
service.cadastrar = function(foto) {
return $q(function(resolve, reject) {
if (foto._id) {
recursoFoto.update({ fotoId: foto._id }, foto, function() {
resolve({
mensagem: 'Foto ' + foto.titulo + ' atualizada com sucesso',
inclusao: false
});
}, function(erro) {
console.log(erro);
reject({
mensagem: 'Não foi possível atualizar a foto ' + foto.titulo
});
});
} else {
recursoFoto.save(foto, function() {
resolve({
mensagem: 'Foto ' + foto.titulo + ' incluída com sucesso',
inclusao: true
});
}, function(erro) {
console.log(erro);
reject({
mensagem: 'Não foi possível incluir a foto ' + foto.titulo
});
});
}
});
};
return service;
});
Express.js
var express = require('express');
var app = express();
var consign = require('consign');
var bodyParser = require('body-parser');
app.use(express.static('./public'));
/* require('../app/routes/fotos')(app);
require('../app/routes/grupo')(app); */
/* require('../app/config/conect')(app); */
app.use(bodyParser.json());
consign({ cwd: 'app' })
.include('api')
.then('routes')
.into(app);
module.exports = app;
API
var api = {};
var contador = 2;
var fotos = [
{ _id: 1, titulo: 'Aguia', url: 'http://www.fundosanimais.com/imagens-aguia-gigante-jpg' },
{ _id: 2, titulo: 'Aguia2', url: 'http://www.fundosanimais.com/imagens-aguia-gigante-jpg' }
];
console.log('entrou na api', api);
api.lista = function(req, resp) {
resp.json(fotos);
resp.end('lista de fotos');
console.log('obtendo fotos');
};
api.buscaPorId = function(req, resp) {
/* req.params._id */
var foto = fotos.find(function(foto) {
return foto._id == req.params.id;
});
resp.json(foto);
}
api.removePorId = function(req, resp) {
fotos = fotos.filter(function(foto) {
return fotos._id != req.params.id;
});
resp.sendStatus(204);
};
api.adiciona = function(req, resp) {
var foto = req.body;
foto._id = ++contador;
/* foto._id = (fotos.length + 1); */
console.log(foto._id);
console.log(req.body);
fotos.push(foto);
resp.json(foto);
};
api.atualiza = function(req, resp) {
var foto = req.body;
var fotoId = req.params.id;
var indice = fotos.findIndex(function(foto) {
return foto._id == fotoId;
});
fotos[indice] = foto;
resp.sendStatus(200);
};
module.exports = api;
Route
/* var api = require('../api/foto'); */
module.exports = function(app) {
var api = app.api.foto;
console.log('testees 2', api);
app.route('/v1/fotos')
.get(api.lista)
.post(api.adiciona);
app.route('/v1/fotos/:id')
.get(api.buscaPorId)
.delete(api.removePorId)
.put(api.atualiza);
};