我刚刚开始构建一个多语言REST API,并且不确定是否有任何关于如何正确整合多语言的惯例。
以下列出了我提出的替代方案,而不知道哪种方式最有意义。
选项1:
URI中的语言变量:http://myapi.com/en/users/john
选项2:
仅返回翻译客户端的错误代码:
GET http://myapi.com/users/john => HTTP 404 {status: false, error_code: "321"}
选项3:
以所有可用语言返回:GET http://myapi.com/users/john => {status: false, error_en: "User not found", error_sv: "Anvandaren finns inte"}
答案 0 :(得分:10)
对于content negotiation,就谈判表示的自然语言而言,HTTP提供了request header Accept-Language
:
Accept-Language: da, en-gb;q=0.8, en;q=0.7
如果可能,服务器会使用response header Content-Language
:
Content-Language: da
仅当资源是不同语言的不同资源时,该语言才应成为URI的一部分。如果没有,则应使用内容协商。