Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在AngularJS中使用$resource查询所有内容_Javascript_Rest_Angularjs_Jax Rs - Fatal编程技术网

Javascript 如何在AngularJS中使用$resource查询所有内容

Javascript 如何在AngularJS中使用$resource查询所有内容,javascript,rest,angularjs,jax-rs,Javascript,Rest,Angularjs,Jax Rs,我不相信我了解如何正确使用Angular的服务。我使用的是JAX-RS服务器端 如果服务应该像这样工作(从 那么如何查询所有工作流?我无法使用WorkflowService来实现这一点,因为它已经尝试/api/workflow/:uuid。我需要有另一个服务,这是基于另一个网址 这看起来不是很灵活,除非我用错了 我习惯于看到服务处理所有数据查询,并使用类似WorkflowService.getActiveWorkflows()的方法返回工作流[] 但是,我不确定如何组织此服务,因为我仍然希望有与

我不相信我了解如何正确使用Angular的服务。我使用的是JAX-RS服务器端

如果服务应该像这样工作(从

那么如何查询所有工作流?我无法使用
WorkflowService
来实现这一点,因为它已经尝试
/api/workflow/:uuid
。我需要有另一个服务,这是基于另一个网址

这看起来不是很灵活,除非我用错了

我习惯于看到
服务
处理所有数据查询,并使用类似
WorkflowService.getActiveWorkflows()
的方法返回
工作流[]


但是,我不确定如何组织此服务,因为我仍然希望有与单个实体交互的方法,如
WorkflowService.save(工作流)。由于
$resource
是如何围绕特定的RESTful URL设计的,因此很难正确地构造它…

我最终得到了这个解决方案

这使我能够构建服务中所需的任何解决方案,同时仍然可以访问可用的资源

'use strict';

/* Services */

angular.module('workstation.services', ['ngResource']).
    service('WorkflowService', function ($resource, $http, apiUrl) {
        var service = new BaseService($resource(apiUrl+'/api/workflow/:uuid', {uuid:'@uuid'}, {}));

        /* Get all available workflows */
        service.getWorkflows = function () {
            return $http.get(apiUrl+'/api/workflow/getAllActive').then(function (response) { return response.data });
        }

        return service;
    });

/* Base service */
function BaseService(resource) {
    this.resource = resource
};
BaseService.prototype.getResource = function () { return this.resource }
BaseService.prototype.newResourceInstance = function () { return new this.resource }
检查,阅读操作参数。它支持定义将覆盖特定操作的基本url的url

使用默认操作“queryAll”,您可以从资源中查询所有内容

例如:

angular.module('workstation.services', ['ngResource']).
factory('WorkflowService', function($resource, apiUrl){
    return $resource(apiUrl+'/api/workflow/:uuid', {uuid:'@uuid'}, {
        queryAll: {
            url: apiUrl + '/api/workflow/getAllActive',
            method: 'GET',
            cache: false,
            isArray: true
        }
    });
});

如果调用该方法而不传递:uuid参数,Angular将从url中删除该参数,我知道。您是否尝试像这里这样调用服务:+1以获取描述性标题(所有内容):)
angular.module('workstation.services', ['ngResource']).
factory('WorkflowService', function($resource, apiUrl){
    return $resource(apiUrl+'/api/workflow/:uuid', {uuid:'@uuid'}, {
        queryAll: {
            url: apiUrl + '/api/workflow/getAllActive',
            method: 'GET',
            cache: false,
            isArray: true
        }
    });
});