programing

AngularJS - Get 및 Post에 대한 $resource different URL

javamemo 2023. 10. 27. 21:40
반응형

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

반응형