RESTful サービスに関する記事をしばらく読んでいて、RESOURCES に対して VERBS を使用することの重要性を理解しています。
しかし、私が理解できないことが1つあります。CRUD の一部ではない特定のアクションを呼び出す必要がある場合はどうなりますか?
たとえば、猫をジャンプさせたいとします。どの形式を使用する必要がありますか?
以下はRESTfulですか?
http://host/cats/123/jump
RESTful サービスに関する記事をしばらく読んでいて、RESOURCES に対して VERBS を使用することの重要性を理解しています。
しかし、私が理解できないことが1つあります。CRUD の一部ではない特定のアクションを呼び出す必要がある場合はどうなりますか?
たとえば、猫をジャンプさせたいとします。どの形式を使用する必要がありますか?
以下はRESTfulですか?
http://host/cats/123/jump
がリソースを表している場合cats/123
、次のように考えてください。そのリソースには多くの状態 (食べる、歩く、寝る、跳ぶ、放尿など) がある可能性があります。REST アーキテクチャ スタイルを使用して API を設計している場合、クライアント アプリケーションがリソースに対して、その状態を変更する許可された要求を行うことを許可する必要があります。
のコンテキストでcats/123
は、リソースの状態を変更する一連の POST 要求を通じてこれを行うことができます。REST のハイパーメディア機能を利用して、以下に示す要求と応答のようなプロセスを作成できます。POST への応答として、許可されるリンクが変更されることに注意してください。また、クライアント アプリケーションは、Href プロパティに含まれる実際の URI ではなく、Links 配列に含まれるプロパティにコーディングします。
リクエスト:
GET cats/123
応答:
{
"Color" : "black",
"Age" : "2",
"Links":[
{
"Food":"kibbles",
"Method":"POST",
"Href":"http://cats/123",
"Title":"Feed the cat"
},
{
"Scare":"yell real loud",
"Method":"POST",
"Href":"http://cats/123",
"Title":"Scare the cat"
}]
}
リクエスト:
POST cats/123
{
"Food":"kibbles"
}
応答:
{
"Color" : "black",
"Age" : "2",
"Tummy" : "full"
"Links":[
{
"Sleep":"lap",
"Method":"POST",
"Href":"http://cats/123",
"Title":"Pet the cat"
},
{
"Scare":"yell real loud",
"Method":"POST",
"Href":"http://cats/123",
"Title":"Scare the cat"
}]
}