REST API:距离测量单位

时间:2015-11-10 12:47:05

标签: rest asp.net-web-api api-design

有利的距离测量单位取决于文化。

例如, feet 可能优于。这将使API的某些消费者不希望使用以下响应模型:

GET [uri]
{
    ...
    "distanceInMetres": 256
}

也许客户应该能够提供他们的文化偏好:

GET [uri]?culture=en-US
{
    ...
    "distance": {
        "value": 840,
        "unit": "ft"
    }
}

这是否是一种可接受的处理方式?我似乎无法找到任何最佳做法或标准。

2 个答案:

答案 0 :(得分:1)

替代方案2肯定是从JSON角度出发的方式。它易于扩展,请求语义不需要更改以支持其他地区/单位。

使用HTTP参数"来调整"对象表示也完全没问题。

虽然不是真的符合传统的REST原则,但在某些情况下使用路径元素来提供这样的参数是非常实用的。

GET [/app/en-US/<resource-id>]?params1=

如果您的API需要一些参数来处理大多数请求(例如,提供特定于区域的值),这是有意义的。

答案 1 :(得分:1)

第二种方法似乎完全正确 - 与单位一起返回距离。但是,使用查询参数似乎不是主意。

对于各种特定于语言的功能,使用标头会更好。甚至还有一个标题 - Accept-Language,但这里不合适。除非您使用预定义的查询参数来获取字段子集,否则查询参数应该更多地用于更改响应数据本身而不是它们呈现的方式,例如。