我正在使用 i18next 库,以及前面的 React,我打算通过每个请求将当前语言的信息传递到我的 api。
我有一个 axios 客户端,包装在我在整个应用程序中使用的常量中,如下所示: `
const client = axios.create({
baseURL: CONSTANTS.API.BASE,
headers: {
"Content-Type": "application/json",
},
timeout: TIME_OUT,
});
`
我想知道是否有一些简单的方法可以做到这一点,然后获取后面的语言信息。 顺便说一句,我在我的 api 中使用 Django REST Framework。
我尝试简单地在客户端的标头中声明一个变量,只是为了测试,但我无法在 api 中获取请求中的值
这实际上取决于服务器如何处理语言标头,但您必须以与发送 Content-Type 相同的方式将其发送到服务器。
这里是使用Spring boot(默认策略通过请求头Accept-Language检测语言)和axios的示例。在示例中,我正在创建新的 axios 实例。如果您不创建新实例,则可以以几乎相同的方式在现有实例上设置默认值。请参阅 axios 文档。
const axiosInstance = axios.create({
baseURL: readEnv("URL_ENV_VAR"),
headers: {
"Accept-Language": i18n.language,
},
});
还要注意 i18n.language 的价值。我遇到过几种浏览器,它们给了我不同的值,所以总是将期望值发送到服务器。