RESTful URL:我应该在哪里放置语言环境? example.com/en/page vs example.com/page?locale=en

时间:2011-10-25 16:27:24

标签: url rest path locale

我正在决定如何组织URL并将语言环境放入其中。我有两个选择:

  1. example.com/en/page
  2. example.com/page?locale=en - Google方式
  3. en.example.com/page - 不好,因为我正在使用子域名
  4. 从一侧example.com/en/page看起来比example.com/page?locale=en更好,更紧凑。 另一方面,对于具有两个表示的一个资源,我们有两个网址example.com/en/pageexample.com/ru/page。 当然,在example.com/page?locale=en的情况下,我们也有一个资源用于一个资源,但根据我的口味,它略微更加RESTful。

    最佳做法是什么?你在用什么?为什么?

2 个答案:

答案 0 :(得分:36)

本地化是Restful API中Content-Negotiation的一部分。

所以我首选的方式是通过标题来实现。 HTTP提供了定义所需语言的标准方法。看看Accept-Language标题。

答案 1 :(得分:17)

来自https://www.w3.org/International/questions/qa-accept-lang-locales

  

HTTP Accept-Language标头最初仅用于指定用户的语言。但是,由于许多应用程序需要知道用户的语言环境,因此通常的做法是使用Accept-Language来确定此信息。 仅使用HTTP Accept-Language标头确定用户的区域设置并不是一个好主意。如果您专门使用Accept-Language,您可能会将用户手铐放入一组不符合他自己的选择。

我的偏好:

  • 请求
    • 使用查询参数
    • 如果查询参数不是,则回退到Accept-Language标头 指定的
    • 如果未定义Accept-Language标头,则回退到已记录默认区域设置
  • 响应