AngularJS:如何使用令牌安全性和自定义方法处理RESTful API?

时间:2012-08-01 13:35:36

标签: javascript angularjs rest

所以说我有 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开发人员理解的方式扩展它。 / p>

1 个答案:

答案 0 :(得分:2)

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

此外,当您调用方法时,如果参数未经过资格预审,则它们将最终出现在查询字符串中。

下面是我为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' } } 
        });
  })

希望这会有所帮助

- 丹