2016-08-04 8 views
0

Es ist schon eine Weile her, seit ich $ resource für die Verwaltung meiner Serviceaufrufe verwendet habe.

Aus irgendeinem Grund arbeiten alle meine Anrufe ok und erreichen meine REST-Endpunkte, im Grunde/api/profile und/api/profile /: id.

Aber aus irgendeinem Grund, meine Put kehrt als 404.

jemand eine Idee haben, was gehen kann.

Danke und Prost!

'use strict'; 

angular.module('chainLinkApp') 

.config(['$stateProvider', function($stateProvider){ 
    $stateProvider 
    .state('profile', { 
    url:'/profile/:id', 
    templateUrl:'views/profile.html', 
    controller:'ProfileController', 
    controllerAs:'profile' 
    }); 
}]) 

.controller('ProfileController',['$scope', '$http', 'profileFactory', function($scope, $http, profileFactory){ 


    $scope.updateMode = false; 


    $scope.comments = profileFactory.getProfiles.go().$promise.then(function(response){ 
    $scope.comments = response; 
    }); 


    $scope.getProfile = function(commentId){ 
    $scope.comment = profileFactory.getProfile.go({id:commentId}).$promise.then(function(response){ 
     $scope.comment = response; 
     $scope.updateMode = true; 
    }, function(error){ 
     return console.log('An error has occured', error); 
    }); 
    }; 


    $scope.addProfile = function(comment){ 
    profileFactory.postProfile.go(comment).$promise.then(function(){ 
     console.log('Your post was a success'); 
     $scope.comment = {}; 
    }, function(error){ 
     console.log('There was an error: ', error); 
    }); 
    }; 


    $scope.updateProfile = function(comment){ 
    profileFactory.updateProfile.go(comment._id, comment).$promise.then(function(response){ 
     console.log('Your profile has been updated'); 
     $scope.updateMode = false; 
     $scope.comment = {}; 
    }, function(error){ 
     console.log('There is an error: ', error); 
    }); 
    }; 
}]) 


.factory('profileFactory', ['$resource', function($resource){ 

    return{ 
    getProfiles: $resource('/api/profile', {}, { go: { method:'GET', isArray: true }}), 
    getProfile:  $resource('/api/profile/:id',{},{ go: { method: 'GET', params: { id: '@id' }}}), 
    postProfile: $resource('/api/profile', {}, { go: { method: 'POST' }}), 
    updateProfile: $resource('/api/profile/:id', {}, { go: { method: 'PUT', params: { id:'@id' }}}) 
    }; 

}]); 
+0

Das Problem wahrscheinlich in der Server-Seite liegt , überprüfe dein Mapping dort. – Walfrat

+0

Versuchen Sie, {_method: 'PUT'} zu Ihrer Anfrage hinzuzufügen, einige Server können kein echtes PUT verwenden. – KoIIIeY

Antwort

0

Der Weg Sie verwenden $resource seltsam ist, sollte es so aussehen:

.factory('UserService', function($resource) { 
    return $resource('/api/users/:id', {}, { 
     'create': { method: 'POST' }, 
     'update': { method: 'PUT', params: { id: '@id'} } 

    }); 
}) 

Sie den Dienst wie folgt Dann rufen: UserService.create(theUserobj, function(result) { ... })

+0

Danke Mavlarn. Du hast recht. Eine Weile her, seit ich es benutzt habe und ich versuchte, eine Vielzahl von Anrufen zu verketten, einschließlich einiger benutzerdefinierter Anrufe. – cnak2

+0

OK, wie auch immer, es scheint, dass es in Ihrem Code kein Problem gibt. Hast du die URL in deiner Aktualisierungsanfrage überprüft? Welche sollte mit dem Code auf der Serverseite übereinstimmen. Bitte überprüfen Sie die 'ID' in Ihrer URL. – Mavlarn

+0

Yup. Alles funktioniert! – cnak2

Verwandte Themen