У меня есть ситуация, когда мне нужно потреблять спокойную веб-службу в AngularJS с использованием метода GET, позволяя ему принимать символ косой черты "/" в параметре uri. Обычно "/" слэш, создает другую конечную точку, и служба не дает требуемого ответа, и мне нужно использовать веб-службу RESTful, где параметр должен быть передан как строка.
Сценарий, который необходимо учитывать:
Пример URL: http://имя_хоста /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
}
)
ПРИМЕЧАНИЕ. Мне нужно управлять всеми вещами на стороне клиента и не иметь доступа к серверному коду веб-службы.
Кодируйте такой параметр.
encodeURIComponent(paramId)
В противном случае замените/на "% 2f"
У вас был проверенный объект 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
}
);
Позвольте мне знать, если это помогает!