0

私が構築しているゲームでは、トークンをボード上の特定の場所に配置したいと考えています。ボード上の位置は 2D ベクトルで表されますが、URL でこれらのベクトルを表すという些細な問題に頭を悩ませています。

いくつかのスキームを考えることができますが、どれも特に満足できるものではありません:

  1. /point/{x}/{y}元。/point/10/3
  2. /point/{y}/{x}元。/point/3/10
  3. /point/({x},{y})元。/point/(10,3)

最初の 2 つの問題は、ベクトルのどの部分が最初に来るかがかなり恣意的であることです。3 つ目は危険に思えます。一部のユーザー エージェントは「(」、「)」または「,」文字をエンコードする可能性があるため、デバッグするのは面白いだろうと想像できますが、サーバー側のフレームワークはそれに対して寛容であると期待しています。

似たようなことを試しましたか?明らかに優れたオプションがありませんか?

4

1 に答える 1

1

あなたが与える3つの例について、RESTfulではないものはまったくありません。

  1. /point/{x}/{y}元。/point/10/3
  2. /point/{y}/{x}元。/point/3/10
  3. /point/({x},{y})元。/point/(10,3)

ただし、ボード上のすべての正方形を独自の URI で表現しようとはしません。クライアントは、任意の正方形を個別に GET したいですか、それともボード全体だけを GET したいですか? これがたとえばチェッカーの場合、すべてのボード スクエアのステータスを取得するには、サーバーへの 64 回の往復が必要になります。非常に非効率的です!ボード全体に 1 つの URI を使用するということは、各正方形の状態をプロパティにする必要があることを意味します。

PATCH /board
{ "x": "10", "y": "3", "token": "black", .. [other params] .. }

また

PATCH /board
{ "10,3": "black", .. [other params] .. }

忘れないでください、ボードPOSTができなくてもいつでもできます。PATCH

API ドキュメントで、どちらが先か ( xまたはy )を定義する必要があります。yが最初であると定義しないでください:-)

于 2012-12-04T14:11:20.917 に答える