3

たとえば、標準の 、、、およびメソッドを持つRESTFul APIがあるとしますが、特定のオブジェクト タイプに合わせてカスタマイズされた他のメソッドもあり、その上にセキュリティ トークンが必要です。GETPOSTPUTDELETE

したがって、このサービスの URL は次のようになります。

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

最後の 2 つはカスタム機能を実行します。パスワードをリセットするためのものなのか、ユーザーのクローンを作成してレコードを返すためのものなのかはわかりません。ただのカスタム「もの」。

Angular でこれを処理するベスト プラクティスの方法は何ですか? $resource ユーティリティを見たことがありますが、それは標準のRESTメソッド専用のようで、次の Angular 開発者が理解できる方法でそれを拡張する方法がわかりません。

4

1 に答える 1

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

お役に立てれば

――段

于 2012-08-06T21:03:03.093 に答える