【问题标题】:how to fetch local currency code from api url?如何从 api url 获取本地货币代码?
【发布时间】:2018-09-18 04:45:00
【问题描述】:

我正在尝试编写的 API 应该支持以当地货币获取票价。 我应该如何提取国家货币代码?

  • 使用接受语言标头? (在这种情况下,如果我的语言是 en ,我应该如何获取货币代码?)
  • 或者我应该在 url 中传递代码?
  • 还是我应该获取语言环境? 最好的方法是什么?

我将使用 java 货币 api 进行转换

【问题讨论】:

  • 您应该将代码传递给 API。
  • 在客户端,您可以使用Currency.getInstance() 获取本地货币,但如果您正在编写服务器端代码,那将无济于事。

标签: java rest localization


【解决方案1】:

通常,您会检测到您从浏览器/IP 获得的位置(= 国家/地区)。例如:

根据这些信息,您可以应用语言、货币、格式等。

您应该提供一种方法来覆盖此位置(例如,为用户提供下拉菜单),因为有时无法正确检测到该位置,或者用户可能想要使用其他位置,因为他正在旅行。

将当前位置存储在 URL 中并不是一个坏主意。通常,此类 URL 如下所示:

www.acme.com/us/xyz

因此,网址 www.acme.com 会自动检测位置并将用户转发到默认位置(例如 www.acme.com/us),用户可以在其中覆盖它。

之后您可以像这样使用 HTTP GET 查询您的 REST API,其中 USD 来自该位置:

GET .../api/price?currency=USD

如果您仍然需要使用 POST,因为您有很多参数,您也可以在正文中提供请求的货币,尽管它不是很 RESTish。在 URL 中包含所有参数的优点是,您还可以从缓存机制中受益,并且它在任何地方都清晰可见,您所请求的内容(例如在日志中)。 HTTP 标头通常用于安全信息(不应在日志中可见)和每个请求中使用的值(例如 Accept 等)。

【讨论】:

  • 我对 Web API 没有太多经验,但不应该也可以从语言环境中检测货币吗?我认为语言环境信息通常由浏览器发送(但默认情况下可能不会通过 REST 或其他方式发送)。
  • 啊,也许我误会了你。要通过 REST API 查询不同的货币,查询参数肯定是正确的。例如。 .../api/price?currency=USD。我更新了我的答案。
  • 添加了更多关于在何处使用查询参数、HTTP 标头甚至正文中的参数的信息。
猜你喜欢
  • 2014-12-07
  • 2019-08-27
  • 2012-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多