Потребление спокойного сервиса с символом «косой черты» в параметре uri в угловом коде JS

0

У меня есть ситуация, когда мне нужно потреблять спокойную веб-службу в AngularJS с использованием метода GET, позволяя ему принимать символ косой черты "/" в параметре uri. Обычно "/" слэш, создает другую конечную точку, и служба не дает требуемого ответа, и мне нужно использовать веб-службу RESTful, где параметр должен быть передан как строка.

Сценарий, который необходимо учитывать:

Пример URL: http://имя_хоста /servicename/ {параметр}, где параметр должен быть строкой и должен быть действителен для подставляемых образцов

  • 12
  • 12/15
  • 126/567

Я использую ниже код

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
        }
    )

ПРИМЕЧАНИЕ. Мне нужно управлять всеми вещами на стороне клиента и не иметь доступа к серверному коду веб-службы.

Теги:
rest
web-services

2 ответа

2

Кодируйте такой параметр.

encodeURIComponent(paramId)

В противном случае замените/на "% 2f"

  • 0
    Спасибо за ваш быстрый ответ! Однако, поскольку мне приходится управлять всеми вещами на стороне клиента, я попытался использовать предоставленные вами материалы, но все равно не повезло. Замена / на «% 2f» создает другую конечную точку и не дает найденной конечной точки error.encodeURIComponent также не работает, так как создает URL-адрес, такой как имя хоста / service / 126/12, который выдает ошибку «Не найдена конечная точка».
  • 0
    Вы можете опубликовать свой код?
Показать ещё 6 комментариев
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
                }
            );

Позвольте мне знать, если это помогает!

  • 0
    Сожалею! Это не работает. На самом деле он создает URL-адрес службы имя хоста / service / serviceMethod? ParamId = 126% 2f12% 22 , что не приводит к ошибке конечной точки 404. И вместо параметров запроса я должен использовать имя хоста URI param / service / serviceMethod {paramId}. Пожалуйста, проверьте и помогите мне.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню