2012-03-02 18 views
0

expressとnodejsを使用して、別のバックエンドサービスからのデータに基づいてhtmlページをレンダリングするシステムを構築しようとしています。バックエンドサービスは、nodejsサーバーがhtmlをレンダリングしてブラウザに渡すために使用するJSONデータを提供します。 RESTとHyemediaの制約を読んで、私はこれをデザインに使用したいと思っていますが、それを理解できないようです。簡単な例は、各アイテムがそのアイテムの詳細を得るためにクリックできるリンクであるアイテムのリストを提供するページです。だから、バックエンドサービスは、私はその後、nodejs名に「タイトル」を使用してリンクのリストとHTMLでページをレンダリングしている 2つのバックエンドサービスを使用してREST Hypermedia制約を実装する

{ 
    "title": "List of items" 
    "self": "http://api.hostname.com/items 
    [ 
    { 
     "title":"item1", 
     "url": "http://api.hostname.com/items/1 
    } 
    { 
     "title":"item2", 
     "url": "http://api.hostname.com/items/2 
    }  { 
     "title":"item3", 
     "url": "http://api.hostname.com/items/3 
    } 
} 

のように見えるいくつかのJSONを作るかもしれません。問題は、私はhrefのために何を使うべきかわかりません。 HREFは

href="/items/2 

のようなアイテムをレンダリングするが、私は、ノードがバックエンドサービスにそれを渡すことができるようにバックノードに「URL」フィールドを渡す方法はありませんとのビューにある場合、それは動作します。私はビューのURLに基​​づいてバックエンドサービスのためのURLを構築することになります。私はRESTがハイパーメディアの方法ではないと理解しています。つまり、私のノードコードは、URLを取得して直接使用するのではなく、バックエンドサービスのURLの形式を知っていなければなりません。

クライアント上に保存するためにhrefのクエリパラメータとして "url"フィールドを追加するような巧妙な機能はありますか?私はハイパーメディア拘束を誤解していますか、それとも全く使用しようとしているのでしょうか?

答えて

0

ハイパーメディア制約を使用する必要があるかどうかは意見です。 (私はblog post stating my own opinionを持っています)。

より具体的な答えとして、実際には2つの独立したRESTシステムがあり、そのうちの1つはhtmlに対応し、もう1つはjsonに対応していることを指摘します。機能が同等である場合、ハイパーメディア制約は、実際にシングルシステムであることを期待します。要求は、Accepts httpヘッダーに基づいて異なるメディアタイプを返すことができます。これにより、あなたの問題は解決されます(URLが同じになるため)。

+0

今のところ私はハイパーメディアの制約について心配しないことに決めました。リンクをありがとう、私はそれを便利に(そして穏やかに)見つけました。 – masebase

関連する問題