AngularJSとは、Angularの古いバージョンを指します。詳しくはWikiの「AngularとAngularJSの違い」を参照してください。(以下、一部抜粋)
2012年6月にリリースされたバージョン1は「Angular 1」や「AngularJS」と呼ばれており、その後、2016年9月にリリースされたバージョン2は「Angular v2」または「Angular2+」と呼ばれていた。ただし、後述の通りバージョンリリースサイクルが早いため、バージョン2以降は単に「Angular」と呼ばれるようになった。
この記事に書くこと
AngularJSの$resourceで...
- カスタムメソッドを書く方法
- DELETEメソッドの注意点
カスタムメソッド
$resourceは、RESTfulなAPIに対して、操作する振る舞いを提供するオブジェクトを生成してくれます。
デフォルト、以下HTTPメソッドを提供してくれています。
{ 'get': {method: 'GET'}, 'save': {method: 'POST'}, 'query': {method: 'GET', isArray: true}, 'remove': {method: 'DELETE'}, 'delete': {method: 'DELETE'} }
PUT
/ PATCH
や、その他のメソッドを生成したい場合は、
以下のような形で定義します。
const User = $resource( '/user/:userId', { userId: '@id' }, { put: { method: 'put' }, patch: { method: 'patch' } } ); // 呼び出し方 const body = { name: 'test' }; User.put({userId: 1}, body); User.patch({userId: 1}, body);
ソースコードを見た際、
get
/save
/query
/remove
/delete
以外のメソッドが呼ばれているときは、
このような形で定義されている箇所があるはずです。
定義されている場所を特定し、挙動を把握してから使用可否を決めましょう。
DELETEメソッドの場合、Bodyを送信できない
$resource
で定義した(裏で$http
が使われている)DELETEメソッドは、
Bodyの送信をサポートしていないようです。
RFC的にも、DELETEのBodyを送信してはいけないような記述はないとのことです。
ただ、DELETEメソッド=リソースの削除と考えた場合、Bodyを利用するケースは少ないと思われます。
リソースの一部を削除(例えば、users.tags = ['aaa', 'bbb']
のようなデータを['aaa']
と更新したい)場合は、DELETEではなく、PATCHを用いるのがベターかもしれません。
おわり
以上になります。
気になる点などありましたら、フィードバックいただけると助かります。
所感
新規開発を行う場合、とくに理由がない場合は、その言語・FWの最新(もしくは新しめで安定した)バージョンを使用すると思います。
ただ、会社やプロダクト等のステージによっては、機能開発に専念し、技術の負債が返せないまま...といったことも十分にありえます。
そんな負債に立ち向かうときにも、古い技術の記事も残しておくべきかな...と考え、本記事を書きました。
↑のようなケースな方の参考になれば、幸いです。