From 131e4014b831ac81b7979c4523da81ebc5861c70 Mon Sep 17 00:00:00 2001 From: Gias Kay Lee Date: Fri, 20 Dec 2013 23:15:46 +0800 Subject: [PATCH] fix($resource): prevent URL template from collapsing into an empty string if url template would result in an empty string, we should make a request to '/' instead. Closes #5455 Closes #5493 --- src/ngResource/resource.js | 2 +- test/ngResource/resourceSpec.js | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/ngResource/resource.js b/src/ngResource/resource.js index dedbf8607acd..8874bbeca484 100644 --- a/src/ngResource/resource.js +++ b/src/ngResource/resource.js @@ -401,7 +401,7 @@ angular.module('ngResource', ['ng']). }); // strip trailing slashes and set the url - url = url.replace(/\/+$/, ''); + url = url.replace(/\/+$/, '') || '/'; // then replace collapse `/.` if found in the last URL path segment before the query // E.g. `http://url.com/id./format?q=x` becomes `http://url.com/id.format?q=x` url = url.replace(/\/\.(?=\w+($|\?))/, '.'); diff --git a/test/ngResource/resourceSpec.js b/test/ngResource/resourceSpec.js index 28154313c5a0..b23f0ca42bd7 100644 --- a/test/ngResource/resourceSpec.js +++ b/test/ngResource/resourceSpec.js @@ -150,6 +150,13 @@ describe("resource", function() { R.get({a:6, b:7, c:8}); }); + it('should not collapsed the url into an empty string', function() { + var R = $resource('/:foo/:bar/'); + + $httpBackend.when('GET', '/').respond('{}'); + + R.get({}); + }); it('should support escaping colons in url template', function() { var R = $resource('http://localhost\\:8080/Path/:a/\\:stillPath/:b');