对于我正在构建的游戏,我想将令牌放到棋盘上的某个位置。电路板上的位置由2D矢量表示,但现在我对在网址中表示这些矢量的琐碎问题感到头疼。
我可以想到几个方案,其中没有一个特别令人满意:
/point/{x}/{y}
例如/point/10/3
/point/{y}/{x}
例如/point/3/10
/point/({x},{y})
例如/point/(10,3)
前两个问题是,矢量的哪个部分首先是任意的。第三个似乎有风险;我可以想象调试会很有趣,因为一些用户代理可能会编码'(',')'或','字符,尽管我希望我的服务器端框架能够容忍它。
你尝试过类似的东西吗?我错过了一个明显优越的选择吗?
答案 0 :(得分:1)
对于你给出的三个例子,没有任何不妥之处:
/point/{x}/{y}
例如/point/10/3
/point/{y}/{x}
例如/point/3/10
/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文档中定义哪个首先出现( x 或 y )。请不要定义 y < / em>作为第一个: - )