所以说,我有一个 基于REST的API 是有标准的GET,POST,PUT,和DELETE它的方法,但我也有它是习惯特定对象类型的其他方法,并就我需要一个安全令牌顶部。
GET
POST
PUT
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开发人员可以理解的方式扩展它。
如果我对您的理解正确,我相信您在问的是如何使资源方法自动包含您的令牌?如果这是正确的,那么您可以通过两种方法来做到这一点。首先,您可以扩展预定义的资源方法并烘焙将在每次调用中应用的参数,也可以定义自己的方法。
另外,当您调用方法时,如果尚未对参数进行预限定,则它们将最终出现在查询字符串中。
以下是我为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' } } }); })
希望这可以帮助
- 担