如何安排我的多语言RESTAPI?

如何安排我的多语言RESTAPI?,rest,spoken-language,Rest,Spoken Language,我刚刚开始构建一个多语言RESTAPI,不确定是否有任何关于如何正确集成多语言的约定 下面是我提出的备选方案列表,不知道哪一个最有意义 选项1: URI中的语言变量:http://myapi.com/en/users/john 选项2: 仅返回翻译客户端的错误代码: GEThttp://myapi.com/users/john =>HTTP 404{状态:false,错误代码:“321”} 选项3: 以所有可用语言返回:GEThttp://myapi.com/users/john =>{stat

我刚刚开始构建一个多语言RESTAPI,不确定是否有任何关于如何正确集成多语言的约定

下面是我提出的备选方案列表,不知道哪一个最有意义

选项1:
URI中的语言变量:
http://myapi.com/en/users/john

选项2:
仅返回翻译客户端的错误代码:
GEThttp://myapi.com/users/john =>HTTP 404{状态:false,错误代码:“321”}

选项3:
以所有可用语言返回:
GEThttp://myapi.com/users/john =>{status:false,error_en:“User not found”,error_sv:“Anvandaren finns inte”}

对于协商表示的自然语言,HTTP提供:

如果可能,服务器将使用以下命令答复此请求:


只有当资源是不同语言的不同资源时,该语言才应该是URI的一部分。如果没有,则应使用内容协商。

请描述您所在领域中的“正确使用多种语言”是什么。对于不同的语言,是否会有不同的用户
john
?否,所有语言的数据以及资源名称都是相同的。在这种情况下,内容协商将仅用于协商响应中人类可读字符串的语言。非字符串或非人员使用的字符串(如对象键)将不会被翻译。@DonalFellows Yes。从这个问题来看,我不确定这是否是“多语言RESTAPI”的意思。但如果有疑问,请使用标准:)
Accept-Language: da, en-gb;q=0.8, en;q=0.7
Content-Language: da