转换、计算的RESTful设计

转换、计算的RESTful设计,rest,restful-architecture,restful-url,Rest,Restful Architecture,Restful Url,如何设计操作,如: 算计 皈依 翻译 例如:从“欧元”转换为“人民币”,金额为“100” 这是不是转换成?从=欧元到=人民币,金额=100RESTful? /convert?from=EUR&to=CNY&amount=100 那可不舒服。可以说这标识了一个REST资源 但它看起来像HTTP上的RPC(远程过程调用),在没有货币转换那么简单的情况下,这将导致一个非RESTful系统 总是问自己:我的资源是什么 一个答案可能是:资源是转换结果,由两种货币和金额标识。那么,如果

如何设计操作,如:

  • 算计
  • 皈依
  • 翻译
例如:从“欧元”转换为“人民币”,金额为“100”

这是不是转换成?从=欧元到=人民币,金额=100RESTful?

/convert?from=EUR&to=CNY&amount=100
那可不舒服。可以说这标识了一个REST资源

但它看起来像HTTP上的RPC(远程过程调用),在没有货币转换那么简单的情况下,这将导致一个非RESTful系统

总是问自己:我的资源是什么

一个答案可能是:资源是转换结果,由两种货币和金额标识。那么,如果你使用

/conversion?from=EUR&to=CNY&amount=100
请注意,路径是名词(
conversion
),而不是动词(
conversion
)。通常,如果您可以用名词命名REST资源,那么您的思路是正确的

如果您将识别位放入查询参数(
?from=EUR&to=CNY&amount=100
)或路径中,这是一个品味问题。你可以用

/conversion/EUR/100/CNY
使用三个路径参数:

/conversion/{FROM}/{AMOUNT}/{TO}
转换 您的API在我看来很好:

/convert?from=EUR&to=CNY&amount=100
卢茨·霍恩也提供了一个很好的选择

算计 如果您的API必须处理复杂或冗长的操作,那么最好使用POST:

/calculate
您可以在请求中包含计算。这样可以避免在URL中包含冗长的计算

如果您的API必须处理简单操作,则可以使用以下设计:

/calculate/add/?param1=value1&param2=value2
类似地,对于
减法
乘法
除法

/calculate/subtract
/calculate/multiply
/calculate/divide
翻译 对于翻译,我喜欢Google Translate的API设计:

/translate/{source}/{target}/value
这里,
source
是您的源语言(比如EN),而
target
是您的目标语言(比如HI)


最后,您的API设计取决于您的选择。

“您可以在请求中包含计算”。这将是RPC,而不是REST。在这种情况下,REST资源是什么?