web-dev-qa-db-ja.com

AngularでHATEOAS REST APIを使用する方法は?

私は別のチームによって構築されたAPIのAngular 4フロントエンドに取り組んでいます。APIはHATEOASに従い、すべての応答でハイパーメディアリンクを提供します。

APIの形状を知っていて、URLをAngularサービスに最小限の手間でハードコーディングできると思います。しかし、同僚(バックエンド開発者)が私を説得しようとしています。フロントエンドとバックエンド間の結合が少なくなる(APIが変更された場合に破損する可能性がある)ため、ハイパーメディアを最大限に活用する必要があります。

ただし、Angularの組み込みのHttpサービスを使用して単純なHATEOASパターンを実装する方法に困惑しています。すべてのサービスを結合せず、テストを困難にする方法でハイパーメディア/ URL情報を保存/共有するにはどうすればよいですか?そこに例はないようです。

HATEOAS対応のHTTPクライアントを作成しようとするのは良い考えでしょうか、それとも問題を起こす価値がないのでしょうか。

14
Jon Gunter

あなたの同僚は正しいです、あなたはバックエンドが提供するメタ情報を使うべきです。このようにして、そこに属していないクライアントに責任を負わせることはありません。クライアントがエンティティをどこからフェッチするかを知る必要があるのはなぜですか?エンティティ(実際には一般的なデータ)の保存は、バックエンドの責任です。バックエンドはデータを所有し、データの配置場所、アクセス方法、場所や永続性の種類をいつ変更するか、データの保存に関連するすべてのものを決定します。

すべてのサービスを結合せず、テストを困難にする方法でハイパーメディア/ URL情報を保存/共有するにはどうすればよいですか?

なぜHATEOASを使用するとテストが難しくなると思いますか?実際、URLが静的であり、バックエンドがスタブ化できないため、使用しないとテストが難しくなりません。

バックエンド応答から情報を抽出し、それをメタ情報としてangular model、on _metaキーまたはそのようなもの。

1