一尘不染

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

angularjs

所以说,我有一个 基于REST的API
是有标准的GETPOSTPUT,和DELETE它的方法,但我也有它是习惯特定对象类型的其他方法,并就我需要一个安全令牌顶部。

因此此服务的网址可能如下所示:

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

GET
http://sample.com/api/User/GetUsersByStatus?token=ABCDEF1234¶m1=blah¶m2=foo

要么

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

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

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


阅读 243

收藏
2020-07-04

共1个答案

一尘不染

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

另外,当您调用方法时,如果尚未对参数进行预限定,则它们将最终出现在查询字符串中。

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

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' } } 
        });
  })

希望这可以帮助

- 担

2020-07-04