Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RESTful URL:我应该将区域设置放在哪里?example.com/en/page vs example.com/page?locale=en_Url_Rest_Path_Locale - Fatal编程技术网

RESTful URL:我应该将区域设置放在哪里?example.com/en/page vs example.com/page?locale=en

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。

我正在决定如何组织URL并将区域设置放入其中。我有两个选择:

  • example.com/en/page
  • example.com/page?locale=en——谷歌方式
  • en.example.com/page--不好,因为我使用的是子域
  • 从一个侧面看,
    example.com/en/page
    example.com/page?locale=en
    看起来更好、更紧凑。 另一方面,对于一个具有两个表示的资源,我们有两个URL
    example.com/en/page
    example.com/ru/page
    。 当然,在case
    example.com/page?locale=en
    中,我们也为一个资源提供了两个URL,但根据我的口味,它稍微有点安静


    最佳做法是什么?您正在使用什么以及为什么使用?

    本地化是Restful API中内容协商的一部分

    所以我更喜欢的方式是通过标题。HTTP提供了定义所需语言的标准方法。查看标题。

    来自:

    HTTP Accept Language标头最初仅用于指定用户的语言。然而,由于许多应用程序需要知道用户的语言环境,通常的做法是使用Accept语言来确定这些信息单独使用HTTP Accept Language标头来确定用户的区域设置不是一个好主意。如果您仅使用Accept语言,则可能会将用户束缚在一组不符合其喜好的选项中

    我喜欢:

    • 请求
      • 使用查询参数
      • 如果查询参数不可用,则返回到
        接受语言
        标题
        指定的
      • 如果未定义
        Accept Language
        标题,请返回到记录的默认区域设置
    • 回应
      • 设置内容语言
      • 在响应负载中设置区域设置,如
        (请参阅)

    是的。我知道接受语言。但在俄罗斯,例如,许多人使用英语语言环境,但更喜欢俄语内容。所以,如果我只使用Accept语言,他们将没有机会更改内容的语言(当然,除了更改浏览器的区域设置)。最常见的解决方案是站点布局中的语言切换器。因此,我试图了解组织这种切换器的最佳方式是什么。我明白了,那么您的api客户端是浏览器(例如,通过AJAX调用)?然后我会选择您建议的url参数方式(比如?lang=en),因为它为您提供了“可选”语义(具有回退以接受语言头)、浏览器和外部服务。谢谢你的意见,我也这么想。我不认为使用
    接受语言有什么问题。是的,当您的浏览器发送一个页面的HTTP请求(可能只是您的SPA索引)时,它将发送浏览器设置中设置的值。但是对于使用Ajax对API的所有请求,您当然可以为这个头指定任何您想要的值——任何合适的框架都允许您自动配置这个头。例如,您仍然可以让用户从下拉列表中选择区域设置,并始终将其与每个连续请求一起发送。