Angular.js 매개 변수를 사용하여 리소스를 삭제
나의 rest api는 다음 url로 DELETE 요청을 받습니다.
/api/users/{slug}
따라서 지정된 사용자(슬러그)에게 삭제를 전송하면 해당 사용자는 삭제됩니다.서비스 코드는 다음과 같습니다.
angular.module('UserService',['ngResource']).factory('User', function($resource){
var User = $resource('/api/users/:id1/:action/:id2', //add param to the url
{},
{
delete_user: {
method: 'DELETE',
params: {
id1:"@id"
}
},
update: {
method: 'PUT',
params: {
id1:"@id"
}
}
});
return User;
});
다음을 통해 삭제 기능을 호출합니다.
user.$delete_user({id:user.id}, function(){}, function(response){});
하지만 잘못된 url로 요청이 전달된 것 같습니다.
/api/users?id=4
그래서 실제로 파라미터가 누락되어 결과적으로 405 Method가 허용되지 않습니다.혹시 제 api 스타일로 삭제 요청을 보낼 기회가 있을까요?
params
는 작업에 있는 기본 요청 매개 변수의 개체입니다.URL 매개변수를 원할 경우 다음과 같이 두 번째 매개변수에 매개변수를 지정해야 합니다.
angular.module('UserService',['ngResource']).factory('User', function($resource){
var User = $resource('/api/users/:id1/:action/:id2', //add param to the url
{id1:'@id'},
{
delete_user: {
method: 'DELETE'
}
});
return User;
});
이 기능은 다음 중 하나와 함께 작동합니다.
// user has id
user.$delete_user(function(){
//success
},function(){
// error
});
아니면
var data = {id:'id_from_data'};
User.delete_user({},data);
아니면
var params = {id1:'id1_from_params'};
User.delete_user(params);
저는 plnkr-example을 만들었습니다. DELETE 요청이 올바른지 확인하려면 콘솔을 열어야 합니다.
각도 리소스 설명서의 매개변수 기본값을 참조하십시오.
서비스를 이용하여 카테고리를 추가/삭제/업데이트하는 과정에서 한동안 이런 문제가 있었습니다.param forget을 전달하는 동안에는 잘 작동했지만 삭제할 때 api/resource/1234가 아닌 ?id=1234가 표시되었습니다.
기본 매개변수를 문자열로 만들어서 이 문제를 해결했습니다.
///컨트롤러
Service.delete({categoryId:id}, function(resp){
console.log(resp)//whatever logic you want in here
});
//SERVICE
$resource('api/resource/:categoryId', {"categoryId":"@categoryId"}, {
query:{method:"GET"},
delete:{method:"DELETE"},
});
작동해야 하고 결과 url은 원래 변수 이름으로 기본 params에 categoryId가 있었습니다.
api/resource/1234 etc
매개 변수에서 '@'만 생략합니다.
.factory('reportFactory', ['$resource', 'baseUrl', function ($resource, baseUrl) {
return $resource(baseUrl + '/keys/:id', {}, {
delete: { method: 'DELETE',
headers: {
'Content-Type': 'application/json'
},
params: {id: 'id'} }
})
}]);
이를 통해 다음을 얻을 수 있습니다.
http://localhost:8080/reports/api/keys/b8a8a8e39a8f55da94fdbe6c
물음표가 없는
모델을 삭제하려면 매개변수를 추가할 필요가 없습니다(어차피 DELETE에는 매개변수가 작동하지 않음).
$resource('/users/:id').delete({id: user.id}, function(res) {
...
})
아니면
$resource('/users/:role/:id').delete({role: 'visitor', id: user.id});
ngResource의 버그인지 잘 모르겠습니다.
언급URL : https://stackoverflow.com/questions/16167463/angular-js-delete-resource-with-parameter
'programing' 카테고리의 다른 글
SQL 보기에 기본 키 추가 (0) | 2023.10.21 |
---|---|
ARM: 링크 레지스터 및 프레임 포인터 (0) | 2023.10.21 |
mysql 셸 내의 테이블 줄 없이 쿼리 결과 표시(비표 출력) (0) | 2023.10.21 |
함수에서 비동기 대기를 사용하여 비동기 함수에서 값을 반환하는 방법은 무엇입니까? (0) | 2023.10.21 |
jQuery.val() vs.attr("value") (0) | 2023.10.21 |