0

シナリオは、ターン ベースの RPG REST サービスです。ほとんどのゲームはハイパーメディア リソースとしてモデル化できますが、特定のユース ケースで問題が発生しています。アバターがモンスターを攻撃したい。クライアントに終了状態を生成させることはできません。チートを防ぐために、サーバーは、ミスまたはヒットがあるかどうか、およびヒットした場合は、減算するヒット ポイントの数を決定する必要があります。また、信頼性と重複排除も必要です。

公開されたベース URL:

Req:
GET /game
Res:
HTTP/1.1 200
<world>
 <link rel="avatars" href="/avatars"/>
 <link rel="monsters" href="/monsters"/>
</world>
<link rel="actions" href="/actionqueue"/>

明らかなアバターとモンスター コレクションのリストをスキップします。

Req:
GET /avatars/1
Res:
HTTP/1.1 200
<avatar>
 <name>Puck</name>
 <health>high</health>
 <link rel="weapon" href="/weapon/3">dagger</link>
</avatar>

Req:
GET /monsters/2
Res:
HTTP/1.1 200
<monster>
 <type>snake</type>
 <health>high</health>
 <state>angry</state>
</monster>

メッセージが失われた場合に複製することを気にしないサーバー生成の一意のリソースを取得します。

Req:
POST /actionqueue
<action/>
Res:
HTTP/1.1 201
Location:/actionqueue/1234

冪等アクション メソッド。

Req:
PUT /actionqueue/1234
<action>
 <type>attack</type>
 <source>
  <avatar>1</avatar>
 </source>
 <target>
  <monster>2</monster>
 </target>
</action>
Res:
HTTP/1.1 200
<outcome>
 <status>success</status>
 <updated>
  <link rel="monster" href="/monsters/2"/>
 </updated>
</outcome>

ここでの質問は、攻撃アクションについてです。私にはRPCのような気がしますが、このようなことをどのように処理しますか? クライアントは状態の変化を事前に知ることができないため、クライアントはサーバーに「何か」を送信して、サーバーが決定した状態の変化を開始する必要があります。より良いテクニックはありますか?これを RESTful な設計と見なしますか?

4

0 に答える 0