34

私はRESTAPIを設計中であり、可能な限りRESTfulであるようにしています。HATEOASをjsonの応答に組み込みたいと思います。

関連するリソースにURLを追加するのは簡単ですが、それらのリンクに使用する構造についていくつかの議論がありました。

私が見つけた多くの記事は、ATOMフィードから借用した構造を使用しています。

"links": [ 
    {"rel": "self", "href":"http://example.org/entity/1"},
    {"rel": "friends", "href":"http://example.org/entity/1/friends"}, ... 
]

これはいくつかの質問を提起しました:

  • なぜ配列をコンテナとして使用するのですか?私が知っているjavascript開発者によると、リンクへのアクセスは、オブジェクトのプロパティとしてのリンクを使用すると簡単になります。例えば:

    "self":    { "href":"http://example.org/entity/1" }, /* (facebook uses this) */  
    "friends": { "href":"http://example.org/entity/1/friends", "type": "..."}
    
  • リソースプロパティの参照を記述するための一般的なjson構造(アトムを再度適応させる以外)はありますか?(たとえば、メッセージの送信者)。

    参照はおそらくURLとして再度解決されるはずですが、単純なIDも含めるのは悪いことでしょうか?のようなもの:

    "sender": { 
        "id": 12345,
        "href": "resource-uri"
    }
    

私の考えでは、HATEOASを使用すると、クライアントはAPIを使用するために多くの知識を必要としませんが、その知識を使用する可能性を排除することには消極的です(リンクを作成してプロフィール写真にアクセスするなど)。最初にユーザーを検索せずにクライアント側)。

4

3 に答える 3

26

API-Craft google グループでこのトピックを再開したところ、すばらしい反応がありました。

アレイ設計の主な利点は次のとおりです。

  • 同じ関係に対する複数のリンク
  • リンクを再度書くことなく、同じリンクに対して複数の関係
  • リンクを注文する機能

原因の地図へのアクセシビリティが向上しました。

構造に関する限り、多くの可能性があります。

HAL は最もクリーンなソリューションであるため、HAL を使用すると思います。残りはすべて、json にとっては奇妙に見えます。

于 2012-10-25T06:46:28.973 に答える
4

構造に関する限り、HAL ( http://stateless.co/hal_specification.html ) または JSON-LD: ( http://json-ld.org/ )を試すことができます。

于 2012-10-25T05:47:39.067 に答える