1

我们正在创建一项服务来执行从一种格式到另一种格式的转换。转换的示例是货币、距离、时间、语言等。在我们的例子中,它是地理点(例如从十进制度的纬度/经度到度-分-秒的纬度/经度)。

通常,RESTful 资源具有类似的 OO 概念,该概念在服务器端持久化,可以进行 CRUD(我知道这只是使某些东西成为 RESTful 的一部分),但对于转换事物的简单服务,这并不必然存在。如何让这个 RESTful 实现?目前我们有一些这样的:

要获取支持的格式列表,可以这样做:

GET /coordinates/formats

这将返回格式列表,包括例如 DD 和 DMS(十进制度和度-分-秒)。

然后可以转身并执行如下转换:

POST /coordinates/DD/as/DMS

在此示例中,将在请求正文中传递十进制度的表示(如 JSON 或其他格式),并在响应正文中接收度-分-秒的表示。

这当然有效,但感觉不太稳定,特别是因为相同的 URI 被一遍又一遍地用于不同的输入(不同的十进制度)。诀窍可能是真正专注于操纵它的资源。也许它是一个“转换”:

POST /coordinate/conversions

正文可能会接受 a 值、其格式和所需的输出。但是,所有资源的 URI 仍然相同...

想法?

4

1 回答 1

3

我建议使用参数和GET. 我还将切换路径元素并制作/conversions您的根资源,因为转换是您的“域核心”。

主要原因是:

  • 从上面的 api-client 角度来看,它更容易使用(没有 POST 有效负载,非常容易测试/试用)。客户友好性是 api 设计的最高优先级之一。
  • GET 更适合,因为您不会在服务器端“更改”任何内容,而是转换内容。
GET /conversions/coordinate?input=xxx&format=yyy

我喜欢你用/conversions/formats. 它使格式易于查找,您的 api 更易于解释。然后,相应的数据形成上述调用中“格式”参数的可能值。

或者您是否存储转换(这将有利于改变状态的 POST 方法)?

于 2011-08-17T20:20:24.933 回答