programing

$resource URL 쿼리 문자열

cafebook 2023. 2. 22. 23:13
반응형

$resource URL 쿼리 문자열

기존 ASP를 실행하는 서버의 제한으로 인해 서비스에서는 쿼리 문자열을 사용해야 합니다.

angular
  .module('myServices', ['ng', 'ngResource'])
  .factory('Item', ['$resource',
     function ($resource) {
         return $resource('/api/?p=item/:id');
     }]);

추가 쿼리 문자열 파라미터를 추가합니다.

Item.query({test: 123}, on_success, on_error);

그 결과 URL은

/api/?p=item?test=123

버그가 있는 것 같습니다만, 어떻게 하면 버그를 피할 수 있을까요?

편집: https://github.com/angular/angular.js/issues/1511에 제출합니다.

리소스 매개 변수를 사용할 수 있습니다.경로에 자리 표시자를 지정하지 않은 경우, 해당 자리 표시자는 자동으로 쿼리 문자열 매개 변수로 변환됩니다.이런 식으로:

angular
    .module('myServices', ['ng', 'ngResource'])
    .factory('Item', [
         '$resource',
         function ($resource) {
             return $resource('/api');
     }]);

Item.query({p: 'item/1'});

이로 인해 다음과 같은 요구가 발생합니다./api?p=item/1.

추신.

이미 알고 계시겠지만, 마음에 안 드시는군요.하지만 저는 여전히 이것이 당신의 경우 올바른 방법이라고 생각합니다.당신이 다루고 있는 백엔드의 API 설계가 불량하다는 것을 고려하면, 당신은 Angular를 포장할 수 있습니다.JS 리소스와 다른 서비스가 함께 제공됩니다.

var deferred = $q.defer();
api.api_name.query({
    'param':param_value
},
    function(response) {
        deferred.resolve(response);
    },
    function(response) {
        deferred.reject(response);
    }
);
//
angular
    .module('module_name')
    .factory('api',function($resource){
        var api_var={};
        api_var.api_name = $resource('url?param_key=:param', {
            param: '@param'
        }, {
            'query': {
                method: 'get'
            }
        });
        return api_var;
    });

언급URL : https://stackoverflow.com/questions/13147435/query-string-in-resource-url

반응형