Issue
problem Description
I am dealing with an optional variable called ByteRange. For this purpose I added 2 different URLs in $resource.
When I did that I got the following error:
Message:
    Error in parsing: "tools/test/retrieve/retrieve.service.js", Line 24: Duplicate data property in object literal not allowed in strict mode
Details:
    domain: [object Object]
    domainThrown: true
I understood that I can't have 2 gets. Is there another way to deal with optional variables in Javascript?
source code
(function () {
    'use strict';
    angular
        .module('MyApp')
        .factory('retrieve', retrieveObject);
    retrieveObject.$inject = ['$resource'];
    function retrieveObject($resource) {
        this.resource = $resource('api/tools/test', {}, {
            'list': {
                method: 'GET',
                url: 'api/tools/test/list/:chain/:path/:dataCenter'
            },
            'get': {
                method: 'GET',
                url: 'api/tools/test/get/:chain/:dataCenter/:path/:byteRange'
            },
            'get': {
                method: 'GET',
                url: 'api/tools/test/get/:chain/:dataCenter/:path'
            },
        });
        return this;
    }
})();
                            Solution
Okay this is not perfect but it must help you, probably use regex instead of replace is a better idea.
function resolveUrl(url, params) {
    let resolvedUrl = url;
    for(let i in params) {
        resolvedUrl = resolvedUrl.replace(i, params[i]);
    }
    return resolvedUrl;
}
let params = {
    ':chain': 'aaa',
    ':dataCenter': 'bbb',
    ':path': 'ccc',
    ':byteRange': '',
};
let result = resolveUrl('api/tools/test/get/:chain/:dataCenter/:path/:byteRange', params);
console.log(result);
// Output : "api/tools/test/get/aaa/bbb/ccc/"
params = {
    ':chain': 'aaa',
    ':dataCenter': 'bbb',
    ':path': 'ccc',
    ':byteRange': 'yyy',
};
result = resolveUrl('api/tools/test/get/:chain/:dataCenter/:path/:byteRange', params);
console.log(result);
// Output : "api/tools/test/get/aaa/bbb/ccc/yyy"
                            Answered By - nem0z
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.