AngularJS - Get 및 Post에 대한 $resource different URL
$자원은 웹 서비스를 매우 편리하게 처리할 수 있는 훌륭한 방법입니다.GET과 POST를 서로 다른 URL에서 수행해야 하는 경우에는 어떻게 됩니까?
예를 들어 GET URL은http://localhost/pleaseGethere/:id
그리고 POST URL은http://localhost/pleasePosthere
아무런 변수도 없이
[actions]의 'url' 속성을 사용하여 기본 URL을 재정의합니다.
$resource(url, [paramDefaults], [actions], options);
예를 들어 다음과 같습니다.
$resource('http://localhost/pleaseGethere/:id',{},{
getMethod:{
method:'GET',
isArray:true
}
postMethod:{
url:'http://localhost/pleasePosthere',
method:'POST',
isArray:false
}
}
Angular $ 리소스 사용: http://docs.angularjs.org/api/ngResource/service/$resource
URL을 매개 변수로 노출할 수 있어야 합니다.저는 이렇게 할 수 있었습니다.
$provide.factory('twitterResource', [
'$resource',
function($resource) {
return $resource(
'https://:url/:action',
{
url: 'search.twitter.com',
action: 'search.json',
q: '#ThingsYouSayToYourBestFriend',
callback: 'JSON_CALLBACK'
},
{
get: {
method: 'JSONP'
}
}
);
}
]);
그러면 당신은 당신의 URL을 덮어쓸 수 있습니다.GET
불러.
제가 정말 간단한 테스트를 하면서 발견한 한 가지 주의 사항은 다음을 포함하는 경우입니다.http://
URL 문자열에서 작동하지 않았습니다.오류 메시지를 받지 못했습니다.아무것도 안했어요.
$resource 호출에 매개 변수 이름이 포함된 해시를 추가하는 경우:
$resource('localhost/pleaseGethere/:id', {id: '@id'});
그러면 함수를 호출할 때 :id가 id 매개변수에 매핑됩니다(GET localhost/pleaseGetheer/123).
Resource.get({id: 123});
POST의 경우 id 파라미터를 할당하지 않을 뿐입니다.
Resource.post({}, {name: "Joe"});
올바른 URL이 호출되며, 이 경우 POST localhost/pleaseGetthere(후행 슬래시는 ngResource에 의해 제거됨)입니다.
자세한 내용은 http://docs.angularjs.org/api/ngResource.$resource -> 예제 -> 신용카드 리소스 참조.
Iris Wong의 답변 외에도, 저는 여러 가지 방법과 행동으로 여러 개의 파라미터를 가지는 예를 들어 보고자 했습니다.
angular
.module('thingApp')
.factory('ThingResource', ['$resource', '$state', returnThing]);
그리고 자원:
function returnThing($resource, $state) {
var mainUrl = '/api/stuffs/:stuffId/thing'
var params = {stuffId: '@_id', thingMongoId: '@_id', thingNumber: '@_id'}
return $resource(mainUrl, params, {
'save': {
url: '/api/stuffs/:stuffId/thing/:thingMongoId',
method: 'POST',
interceptor: {
responseError: function(e) {
console.warn('Problem making request to backend: ', e)
$state.go('oops')
}
}
},
'get': {
url: '/api/stuffs/:stuffId/thing/:thingMongoId',
method: 'GET',
interceptor: {
responseError: function(e) {
console.warn('Problem making request to backend: ', e)
$state.go('oops')
}
}
},
'assignThing':{
method: 'POST',
url: '/api/stuffs/:stuffId/thing/assign/:thingNumber'
}
});
}
여기에는 세 가지 방법이 있습니다.
// POST to http://currnt_base_url/api/stuffs/:stuffId/thing/:thingMongoId
ThingResource.save({
stuffId:'56c3d1c47fe68be29e0f7652',
thingMongoId: '56c3d1c47fe6agwbe29e0f11111'})
// GET to current http://currnt_base_url/api/stuffs/:stuffId/thing/:thingMongoId
ThingResource.get({
stuffId:'56c3d1c47fe68be29e0f7652',
thingMongoId: '56c3d1c47fe6agwbe29e0f11111'})
// POST to http://currnt_base_url/api/stuffs/:stuffId/thing/assign/:thingNumber
ThingResource.assignThing({
stuffId:'56c3d1c47fe68be29e0f7652',
thingNumber: '999998'})
이 방법을 따릅니다.
(function () {
'use strict';
angular
.module("app")
.factory("SomeFactory", SomeFactory);
function SomeFactory($resource) {
var provider = "http://stackoverflow.com/:action/:id";
var params = {"id":"@id"};
var actions = {
"create": {"method": "POST", "params": {"action": "CreateAwesomePost"}},
"read": {"method": "POST", "params": {"action": "ReadSomethingInteresting"}},
"update": {"method": "POST", "params": {"action": "UpdateSomePost"}},
"delete": {"method": "GET", "params": {"action": "DeleteJustForFun"}}
};
return $resource(provider, params, actions);
}
})();
도움이 됐으면 좋겠네요!맛있게 드세요.
언급URL : https://stackoverflow.com/questions/12633904/angularjs-resource-different-url-for-get-and-post
'programing' 카테고리의 다른 글
Ora-01427 단일 행 하위 쿼리가 두 개 이상의 행을 선택하여 반환하도록 수정하는 방법은 무엇입니까? (0) | 2023.10.27 |
---|---|
PowerShell에서 Byte[] 만들기 (0) | 2023.10.27 |
AJAX가 뭐지, 정말? (0) | 2023.10.27 |
SQL Server(2008)에서 특정 테이블을 사용하는 뷰를 찾는 방법은 무엇입니까? (0) | 2023.10.27 |
-fPIC 플래그는 오버헤드를 얼마나 추가할 수 있습니까? (0) | 2023.10.27 |