그래서 내가로 정의 된 자원은 다음 한) (저장 POST 응답에서 고유 한 ID를 가져 오지 :
angular.module('questionService', ['ngResource'])
.factory('QuestionService', function($http, $resource) {
var QuestionService = $resource('/api/questions/:key', {}, {
query: {
method:'GET',
isArray:true,
},
save: {
method: 'POST',
}
});
return QuestionService
});
을 그리고 나중에 내가 어떤 형태의 입력을 받아 다음을 수행
var newQ = {
txt: $scope.addTxt
};
QuestionService.save(newQ)
서버는 POST 요청에 응답하여 객체에 대한 JSON을 다시 발행하고 새로운 고유 ID로 위치 헤더를 설정합니다. 문제는 Angular가 JSON 또는 위치 헤더를 객체에 반환하는 저장 작업이 아니며 향후 작업을 위해 서버에서 ID로 설정되지 않는다는 것입니다. 나는 다음과 같은 여러 가지를 시도했다.
transformResponse: function(data, headersGetter) {
locationHeader = headersGetter().location;
key = locationHeader.split('/').slice(-1)[0];
data.key = key;
return data;
}
그러나 반환 된 데이터 항목은 사용되지 않는 것처럼 보인다. 내가 놓친 게 있니? 이것은 REST API와 상호 작용하는 꽤 일반적인 사용 사례처럼 보입니다.
감사합니다.
감사합니다. 이 구문을 사용할 수 있다는 것을 깨닫지 못했습니다. – grivescorbett
$ save가 응답으로 리소스를 덮어 쓰지 않도록하는 방법이 있습니까? 예를 들어 사용자 $ scope.user가 있습니다. $ scope.user. $ save()를 호출하고 서버가 "Success"로 응답하면 ng-resource는 $ scope.user를 "Success"라는 단어로 설정합니다. 그걸 막을 방법이 있습니까? 내 백엔드는 성공한 콜백에서 수동으로 업데이트하고자하는 새 사용자의 ID를 반환합니다. $ scope.user.id = response.id, 전체 사용자 객체를 다시 전달하는 추가 오버 헤드가 없습니다. 응답에서. – parliament