0

对于我正在构建的游戏,我想将代币放到板上的某个位置。板上的位置由 2D 向量表示,但现在我正在为在 url 中表示这些向量的小问题而摸不着头脑。

我能想到几个方案,没有一个是特别讨人喜欢的:

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

前两个的问题在于,向量的哪一部分先出现是相当随意的。第三个似乎有风险;我可以想象调试起来会很有趣,因为一些用户代理可能会编码 '(', ')' 或 ',' 字符,尽管我希望我的服务器端框架能够容忍这种情况。

你试过类似的东西吗?我错过了一个明显更好的选择吗?

4

1 回答 1

1

您给出的三个示例完全没有不安:

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

但是,我不会尝试用它自己的 URI 来表示板上的每个方格。客户是想单独获取任何方块,还是只获取整个棋盘?例如,如果这是 Checkers,则需要 64 次往返服务器才能获取每个棋盘格的状态。非常低效!对整个棋盘使用单个 URI 意味着每个方块的状态必须是一个属性:

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

或者

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

别忘了,POST如果你不能PATCH上板,你总是可以的。

您必须在 API 文档中定义哪个先出现(xy请不要将y定义为第一个 :-)

于 2012-12-04T14:11:20.917 回答