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

Web*_*net 6 javascript rest jax-rs angularjs

我不相信我理解如何正确使用Angular的服务.我正在使用JAX-RS服务器端.

如果服务应该像(从phonecat示例中获取)...

angular.module('workstation.services', ['ngResource']).
    factory('WorkflowService', function($resource, apiUrl){
        return $resource(apiUrl+'/api/workflow/:uuid', {uuid:'@uuid'}, {});
    });
Run Code Online (Sandbox Code Playgroud)

那我该如何查询所有工作流程?我不能用它WorkflowService来完成它,因为它已经尝试过了/api/workflow/:uuid.我需要另一个基于另一个URL的服务.

这似乎不是很灵活,除非我使用它错了.

我习惯于看到Service所有查询数据的句柄,并且有WorkflowService.getActiveWorkflows()返回的方法Workflow[]

但是我不确定如何组织这个服务,因为我仍然希望有与单个实体交互的方法,比如WorkflowService.save(workflow);.如何将$resources设计为围绕特定的RESTful URL,很难正确地构建它...

Web*_*net 0

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

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

'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 }
Run Code Online (Sandbox Code Playgroud)