在RESTful URL中表示向量的好方法是什么

时间:2012-12-04 13:13:12

标签: url rest

对于我正在构建的游戏,我想将令牌放到棋盘上的某个位置。电路板上的位置由2D矢量表示,但现在我对在网址中表示这些矢量的琐碎问题感到头疼。

我可以想到几个方案,其中没有一个特别令人满意:

  1. /point/{x}/{y}例如/point/10/3
  2. /point/{y}/{x}例如/point/3/10
  3. /point/({x},{y})例如/point/(10,3)
  4. 前两个问题是,矢量的哪个部分首先是任意的。第三个似乎有风险;我可以想象调试会很有趣,因为一些用户代理可能会编码'(',')'或','字符,尽管我希望我的服务器端框架能够容忍它。

    你尝试过类似的东西吗?我错过了一个明显优越的选择吗?

1 个答案:

答案 0 :(得分:1)

对于你给出的三个例子,没有任何不妥之处:

  1. /point/{x}/{y}例如/point/10/3
  2. /point/{y}/{x}例如/point/3/10
  3. /point/({x},{y})例如/point/(10,3)
  4. 但是,我不会试图用它自己的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>作为第一个: - )