【问题标题】:How to use angular resource with rails API如何使用带有 Rails API 的角度资源
【发布时间】:2014-06-01 19:06:23
【问题描述】:

我想使用角度资源与我的rails后端交互,内置的$resource服务与rails API不完全兼容,默认不支持PUT,我必须添加自定义操作“更新”与PUT方法。

这种方法的问题是我必须为每个资源添加更新操作,以使角度资源与 rails API 后端保持一致。

这是一个好的方法吗?

我还发现了一个角度资源包装器angularjs-rails-resource,它提供了一个带有 PUT http 动词的更新方法,但它处理参数传递的方式似乎有点奇怪。例如,它用“未定义”键包装参数。

Parameters: {"undefined"=>{"username"=>"xxxx"}, "version"=>"1", "id"=>"88"}

那么,问题是在 Rails API 中使用 Angular 资源的最佳实践是什么?

【问题讨论】:

    标签: ruby-on-rails angularjs ruby-on-rails-4 angular-resource rails-api


    【解决方案1】:

    如果您不想要 restangular 的开销并且只想为每个资源添加更新方法,您可以简单地为 $resource 服务添加一个装饰器。

    类似这样的:

    .config(function ($provide) {
        $provide.decorator('$resource', function ($delegate) {
    
            //Store the delegate, so we can access it later
            var resourceFactory = $delegate;
    
            //Add the actions that you want added to each Resource here
            var default_actions = {'update': {method: 'PUT'}};
    
            return function (url, paramDefaults, actions) {
                actions = angular.extend({}, default_actions, actions);
                return resourceFactory(url, paramDefaults, actions);
            };
    
        });
    })
    

    【讨论】:

    • 谢谢,我认为这是向所有资源添加默认操作的最简单方法
    • 如何添加返回 $resource 实例的方法,但不对后端进行 ajax 调用?
    【解决方案2】:

    使用angular-rails-resource。它针对 Rails 理念进行了优化,这意味着您不必自己处理请求/响应格式。它还支持很多其他很酷的功能,比如嵌套资源、自动名称转换等......

    【讨论】:

      【解决方案3】:

      看看restangular。这确实是一个很好的与 rest api 交互的解决方案。

      【讨论】:

      • 谢谢,restangular 是 $resource 的一个有趣的扩展
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-02
      • 2012-10-27
      • 2018-04-03
      • 2017-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多