私はHATEOASをサポートするSpring Data RESTを使用しています。私はこのパラダイムに不慣れです。
RESTful WebサービスからのGET
応答で、_embedded
という名前のノード内で結果を受け取ることがよくあります。
_embedded
ノードとは何ですか?REST仕様の一部ですか?またはHATEOAS仕様の一部ですか?または、Spring実装に固有ですか?それら?
これは、GET http://localhost:8080/mywebservice/features
のJSON結果の例です。
{
"_links":
{
"search": { "href": "http://localhost:8080/mywebservice/features/search" }
},
"_embedded":
{
"features":
[
{
"feature": "GROUND",
"name": "Terreno",
"data_type": "String",
"_links":
{
"self" : { "href": "http://localhost:8080/mywebservice/features/GROUND" },
"values": { "href": "http://localhost:8080/mywebservice/features/GROUND }
}
},
...
]
}
}
ほとんどの場合、レスポンスに_embedded
ノードが含まれていることに気付きました。コレクションをリクエストした場合でも、検索で単一のリソースをリクエストした場合でも(たとえば、GET http://localhost:8080/mywebservice/persons/search/findByEmail?email=example@[email protected]
を使用して)。
_embedded
を実行するときなど、リクエストが特定のリソースに対するものである場合にのみ、GET http://localhost:8080/mywebservice/features/GROUND
ノードを取得しません。
RESTもHATEOASの仕様もありません。どちらも概念であり、アーキテクチャスタイルでもあります。_embedded
は HAL形式 。
(sic!)リソースを埋め込むことを目的としています。それ以外の場合は、URIのみが返されます。たとえば、GET http://localhost:8080/mywebservice/features
はhttp://localhost:8080/mywebservice/features/GROUND
のようなURIのリストのみを返すことが想定されており、必要に応じてすべてのFeature
を自分でロードする必要があります。 _embedded
を使用することで、すべてのFeature
リソースが応答に埋め込まれるため、個別にロードする必要がありません。