我们正在创建一项服务,以执行从一种格式到另一种格式的转换。转换的例子是货币,距离,时间,语言等。在我们的例子中,它是地理点(例如从十进制度纬度/经度到度 - 分 - 秒纬度/经度)。
通常,RESTful资源有一个类似的OO概念,它在服务器端是持久的,可以是CRUDed(我知道这只是使RESTful成为什么的一部分),但是在一个简单的服务转换东西的情况下,不一定存在。如何制作这个RESTful?目前我们有这样的一些:
要获取支持的格式列表,可以执行以下操作:
GET /coordinates/formats
将返回格式列表,包括例如DD和DMS(十进制度和度 - 分 - 秒)。
然后可以转身并执行转换:
POST /coordinates/DD/as/DMS
在这个例子中,我们会在请求体中传递十进制度的表示(如JSON或其他格式),并在响应体中接收度 - 分 - 秒的表示。
这当然有效,但感觉不合适,特别是因为对于不同的输入(不同的十进制度数)反复使用相同的URI。诀窍可能是真正专注于操纵它的资源。也许它是一个“转换”:
POST /coordinate/conversions
正文可能会接受一个值,它的格式和所需的输出。但是,所有资源的URI仍然相同......
思想?
答案 0 :(得分:2)
我建议使用参数和GET
。我还会切换路径元素并使/conversions
成为您的根资源,因为转换是您的“域核心”。
主要原因是:
GET /conversions/coordinate?input=xxx&format=yyy
我喜欢用/conversions/formats
回馈元数据的方法。它使格式易于查找,并且您的api更易于自我解释。然后,相应的数据形成来自上述调用的“格式”参数的可能值。
或者您是否存储转换(有利于改变状态的POST方法)?