RESTful URL:我应该将区域设置放在哪里?example.com/en/page vs example.com/page?locale=en
我正在决定如何组织URL并将区域设置放入其中。我有两个选择:RESTful URL:我应该将区域设置放在哪里?example.com/en/page vs example.com/page?locale=en,url,rest,path,locale,Url,Rest,Path,Locale,我正在决定如何组织URL并将区域设置放入其中。我有两个选择: example.com/en/page example.com/page?locale=en——谷歌方式 en.example.com/page--不好,因为我使用的是子域 从一个侧面看,example.com/en/page比example.com/page?locale=en看起来更好、更紧凑。 另一方面,对于一个具有两个表示的资源,我们有两个URLexample.com/en/page和example.com/ru/page。
example.com/en/page
比example.com/page?locale=en
看起来更好、更紧凑。
另一方面,对于一个具有两个表示的资源,我们有两个URLexample.com/en/page
和example.com/ru/page
。
当然,在caseexample.com/page?locale=en
中,我们也为一个资源提供了两个URL,但根据我的口味,它稍微有点安静
最佳做法是什么?您正在使用什么以及为什么使用?本地化是Restful API中内容协商的一部分 所以我更喜欢的方式是通过标题。HTTP提供了定义所需语言的标准方法。查看标题。来自: HTTP Accept Language标头最初仅用于指定用户的语言。然而,由于许多应用程序需要知道用户的语言环境,通常的做法是使用Accept语言来确定这些信息单独使用HTTP Accept Language标头来确定用户的区域设置不是一个好主意。如果您仅使用Accept语言,则可能会将用户束缚在一组不符合其喜好的选项中 我喜欢:
- 请求
- 使用查询参数
- 如果查询参数不可用,则返回到
接受语言
标题 指定的
- 如果未定义
标题,请返回到记录的默认区域设置Accept Language
- 回应
- 设置内容语言
- 在响应负载中设置区域设置,如
(请参阅)
接受语言有什么问题。是的,当您的浏览器发送一个页面的HTTP请求(可能只是您的SPA索引)时,它将发送浏览器设置中设置的值。但是对于使用Ajax对API的所有请求,您当然可以为这个头指定任何您想要的值——任何合适的框架都允许您自动配置这个头。例如,您仍然可以让用户从下拉列表中选择区域设置,并始终将其与每个连续请求一起发送。