如何安排我的多语言REST API?

Ind*_*ial 5 rest spoken-language

我刚刚开始构建一个多语言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"}

小智 10

对于协商表示的自然语言的内容协商,HTTP提供请求标头Accept-Language:

Accept-Language: da, en-gb;q=0.8, en;q=0.7
Run Code Online (Sandbox Code Playgroud)

如果可能,服务器将使用响应标头Content-Language回复此请求:

Content-Language: da
Run Code Online (Sandbox Code Playgroud)

只有当资源是不同的资源,不同的语言,而语言应当是URI的一部分.如果不是,则应使用内容协商.