对于我正在构建的游戏,我想将代币放在棋盘上的某个位置。板上的位置由 2D 向量表示,但现在我对在 url 中表示这些向量的微不足道的问题挠头。
我能想到几个方案,没有一个特别令人满意:
-
/point/{x}/{y}
前任。/point/10/3
-
/point/{y}/{x}
前任/point/3/10
-
/point/({x},{y})
前任/point/(10,3)
前两个的问题在于,向量的哪一部分先出现是相当随意的。第三个似乎有风险;我可以想象调试起来会很有趣,因为某些用户代理可能会对"(",")"或","字符进行编码,尽管我希望我的服务器端框架能够容忍这一点。
你试过类似的东西吗?我是否错过了一个明显优越的选择?
你给出的三个例子没有什么不休息的:
-
/point/{x}/{y}
例如。/point/10/3
-
/point/{y}/{x}
前任/point/3/10
-
/point/({x},{y})
前/point/(10,3)
但是,我不会尝试用自己的 URI 来表示板上的每个方块。客户是想单独获得任何正方形,还是只想获得整个董事会?例如,如果这是跳棋,则需要往返服务器 64 次才能获得每个棋盘方块的状态。效率很低!对整个电路板使用单个 URI 意味着每个方块的状态必须是一个属性:
PATCH /board
{ "x": "10", "y": "3", "token": "black", .. [other params] .. }
或
PATCH /board
{ "10,3": "black", .. [other params] .. }
别忘了,如果你不能PATCH
板,你总是可以POST
。
您必须在 API 文档中定义哪个先出现(x 或 y)。请不要将y定义为第一个:-)