使用具有相同URL但不同文件的Restangular

时间:2014-09-09 16:57:37

标签: javascript angularjs restangular

我需要通过Angular与REST Web服务进行通信,而我正在使用RestAngular但是我遇到了一些困难。我必须使用相同的URL,但GET& POST到两个不同的文件。我在app.js中的.config中设置了基本URL,而service.js是我通过RestangularConfigurer设置其他URL的地方。配置中的BaseURL附加了一个查询字符串。服务中的第二个URL没有。我想从配置中的BaseURL获取GET并从输入POST到Factory。以下是我的代码

的示例

app.js

'use strict';

angular
.module('testApp', [
  'ngAnimate',
  'ngCookies',
  'ngResource',
  'ngRoute',
  'ngSanitize',
  'ngTouch',
  'ui.bootstrap',
  'ngGrid',
  'google-maps',
  'ngMessages',
  'restangular'
])
.config(function (RestangularProvider, $routeProvider) {

  RestangularProvider.setBaseUrl('http://dev.domain.com:9005/question-ws.htm?&areacode=215');

  $routeProvider
    .when('/', {
      templateUrl: 'views/main.html',
      controller: 'MainCtrl'
    })

});

service.js

'use strict';

angular.module('testApp')
  .factory('NextRestangular', function($http, $sce, Restangular){
    return Restangular.withConfig(function(RestangularConfigurer) {
      RestangularConfigurer.setBaseUrl('http://dev.domain.com:9005/next-question-ws.htm');
    });
  });

controller.js

'use strict';

angular.module('testApp')
  .controller('ScreenCtrl', function ($scope, Restangular, NextRestangular) {

    Restangular.all().getList();

    NextRestangular.all().getList();

  });

我似乎无法从Restangular获取,我无法POST到NextRestangular。文件结构能否支持这个?我是不是错了?

1 个答案:

答案 0 :(得分:1)

Restangular是一个处理Rest API Restful Resources的服务。

您网址中的.htm让我相信响应不是JSON。如果是这样的话,我不相信Restangular会对你有用。我建议查看ngResource甚至$ http。如果您的回复是JSON,则以下内容可帮助您顺利开展。

在此示例中,baseUrl应为" http://dev.domain.com:9005"。

RestangularProvider.setBaseUrl('http://dev.domain.com:9005');

之前我没有使用setRequestSuffix,但这可能会让你也拥有.htm。

RestangularProvider.setRequestSuffix('.htm');

然后你的API调用应该是这样的。

Restangular.all('next-question-ws').get({areacode: 215});
Restangular.all('next-question-ws').post(
  // JSON Payload here.
});