2016-06-20 9 views
0

次のAPIリンクの構造がHATEOASと互換性があるのでしょうか?このAPI構造はHATEOASと互換性がありますか?

特に、エンドポイントの作成/確認が不明です。ユーザーはそこからグループを作成することができますか、それとも/グループに入れるのはいいですか?

残りについてのご意見は?また、HAL互換でなければなりません。

/groups 
    /create 
    /detail/{groupId} 
    /update 
    /delete 
    /items 
    /search{?page,size,sort} 
+2

なぜ操作( 'create'、' detail'、 'update'、' delete'、 'search')をURIに入れますか?これはRESTではなくRPCです。 –

+1

グループを作成するには PUT/detail/{groupID} - グループを更新する DELETE/detail/{groupID} - グループを削除する –

+1

はい、それは良いでしょう。 –

答えて

1

HATEOAS(Richardson's Maturity Model level 3を参照)すべてのリンクについてです、これはこのようなものになりますHALブラウザとなるよう:

ルート:

{ 
    "_links": { 
    "self": { 
     "href": "/api/root" 
    }, 
    "api:group-add": { 
     "href": "http://apiname:port/api/group" 
    }, 
    "api:group-search": { 
     "href": "http://apiname:port/api/group?pageNumber={pageNumber}&pageSize={pageSize}&sort={sort}" 
    }, 
    "api:group-by-id": { 
     "href": "http://apiname:port/api/group/id" (OR "href": "http://apiname:port/api/group?id={id}") 
    } 
    } 
} 

を追加は、単にそれにPOSTだろう2つのGETメソッドがあります。

ここ
{ 
    "Id" : 1, 
    "Name" : "test", 
    "_links": { 
    "self": { 
     "href": "/api/group/1" (OR "/api/group?id=1") 
    }, 
    "edit": { 
     "href": "http://apiname:port/api/group/1" 
    }, 
    "api:delete": { 
     "href": "http://apiname:port/api/group/1" 
    }, 
    "api:items-query": { 
     "href": "http://apiname:port/api/bonus?groupId=1" 
    } 
    } 
} 

、編集が簡単にPUTとなり、その後、あなたが見る(RESTのレベル2を削除する必要があります:あなたが特定のグループにドリルダウンしたら、次に

(#1と言います)その同じリンクで)、アイテムに関しては、それらがただのプロパティであるか、別のエンドポイントである場合にはおそらく最もよく分かります。グループを取得している同じ呼び出しで返されるようにそれらを埋め込むことさえできます。

関連する問題