我有一种情况需要使用 GET 方法在AngularJS中使用restful Web服务,允许它在uri参数中接受斜杠“/”字符。 通常“/”斜杠,创建一个不同的端点,服务不提供所需的响应,我需要使用RESTful Web服务,其中参数应作为字符串传递。
需要考虑的情景:
示例网址 http://hostname/servicename/ {参数} 其中参数应为字符串,并且对于以下样本输入应该有效
我正在使用以下代码
service.js
angular.module('starter.services', [])
.factory('dataService', ['$http', function($http) {
var obj = {};
obj.getData = function(url){
return $http({
method: 'GET',
url: url,
headers: {'Content-Type': 'application/json;charset=utf-8'},
}).then(function successCallback(response) {
return response.data;
}, function errorCallback(response) {
return "ERROR";
});
}
return obj;
}])
controller.js
var url = "http://hostname/servicename/" + paramId + "";
dataService.getData(url).then(
function(response) {
// Response stuff here
}
)
注意:我必须管理客户端的所有内容,并且无法访问Web服务的服务器端代码。
答案 0 :(得分:2)
像这样对参数进行编码。
encodeURIComponent(paramId)
否则用'%2f'替换/
答案 1 :(得分:1)
您是否尝试过params对象而不是直接在url中传递参数?
如果没有..只需传递参数,如下所示。
<强> service.js 强>
angular.module('starter.services', [])
.factory('dataService', ['$http', function($http) {
var obj = {};
obj.getData = function(url, paramId){
return $http({
method: 'GET',
url: url,
params:{
"paramId" : paramId
},
headers: {'Content-Type': 'application/json;charset=utf-8'},
}).then(function successCallback(response) {
return response.data;
}, function errorCallback(response) {
return "ERROR";
});
}
return obj;
}]);
controller.js
var url = "http://hostname/servicename";
dataService.getData(url, paramId).then(
function(response) {
// Response stuff here
}
);
请告诉我这是否有帮助!