【问题标题】:AngularJS: How do I handle RESTful APIs with token security and custom methods?AngularJS:如何使用令牌安全和自定义方法处理 RESTful API?
【发布时间】:2012-08-01 13:35:36
【问题描述】:

假设我有一个 RESTFul API,上面有标准的 GETPOSTPUTDELETE 方法,但我也有其他方法是针对特定对象类型定制的,除此之外,我还需要一个安全令牌。

因此,此服务的 URL 可能如下所示:

GET/PUT/POST/DELETE http://sample.com/api/User/123?token=ABCDEF1234

获取http://sample.com/api/User/GetUsersByStatus?token=ABCDEF1234&param1=blah&param2=foo

发布 http://sample.com/api/User/DoSomethingCrazy?token=ABCDEF1234

最后两个做一些自定义功能。也许是重置密码,或者是克隆用户并返回记录,我不知道。只是自定义的“东西”。

使用 Angular 处理此问题的最佳实践方法是什么?我见过 $resource 实用程序,但它似乎只适用于标准 REST 方法,我不确定如何以下一个 Angular 开发人员能够理解的方式扩展它。

【问题讨论】:

    标签: javascript angularjs rest


    【解决方案1】:

    如果我对您的理解正确,我相信您要问的是如何使资源方法自动包含您的令牌???如果这是正确的,那么你可以通过几种方式做到这一点。首先,您可以只扩展预定义的资源方法并烘焙将应用于每次调用的参数,或者您可以定义自己的方法。

    另外,当你调用一个方法时,如果参数没有经过预限定,它们最终会出现在查询字符串中。

    以下是我为 cakephp 实现编写的示例代码。我正在为每个预定义的方法和我自己的初始化方法传递动作。

    
    angular.module('myApp.cakephp.services', ['ngResource']).
      factory('CommentSvc', function ($resource) {
            return $resource('/cakephp/demo_comments/:action/:id/:page/:limit:format', { id:'@id', 'page' : '@page', 'limit': '@limit' }, {
              'initialize' : { method: 'GET', params: { action : 'initialize', format: '.json' }, isArray : true },
              'save': { method: 'POST', params: { action: 'create', format: '.json' } },
              'query' : { method: 'GET', params: { action : 'read', format: '.json' } , isArray : true },
              'update': { method: 'PUT', params: { action: 'update', format: '.json' } },
              'remove': { method: 'DELETE', params: { action: 'delete', format: '.json' } } 
            });
      })
    

    希望对你有帮助

    --丹

    【讨论】:

    • 很有趣,所以在我的情况下,我需要像这样设置我的参数。嗯,我想我还没有搞砸到意识到你可以做到这一点,我正准备用 $http 自己动手。谢谢。
    • 很高兴我能帮上忙,再读一遍文档。资源为您做了这么多,值得一看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    • 2015-08-26
    • 2022-01-27
    • 2017-05-19
    相关资源
    最近更新 更多