【问题标题】:Intercept caller language in ASP.NET Core Web.API在 ASP.NET Core Web.API 中拦截调用者语言
【发布时间】:2019-08-03 03:54:42
【问题描述】:

有没有办法在 C# 的 ASP.NET Core Web API 中拦截调用者的语言?

我指的是调用者的自然语言。

解决了以下代码的问题:

    private string GetCulture()
    {
        var headers = this.Request.Headers;
        if (headers.ContainsKey("Accept-Language"))
        {
            Microsoft.Extensions.Primitives.StringValues token;
            headers.TryGetValue("Accept-Language",out token);
            return token[0].ToString().Split(';')[0].Split(',')[0];
        }
        return ("en-GB");
    }

谢谢大家。

【问题讨论】:

标签: c# asp.net-core asp.net-core-webapi


【解决方案1】:

如果您指的是自然语言(如英语),则按语言,客户端可以在 http 标头中指定这一点 content-language:en-us

如果您指的是编程语言,则 http 规范中没有定义标准标头来执行此操作。

一些客户端包含一个user-agent 标头,以告诉您发出请求的应用类型。但并非所有客户都这样做。

如果你可以控制你的调用者,你可以在调用者发出请求来表示语言时设置你自己的http头。

例如X-Caller-Language:cs

并将您的 Web Api 上的此标头解释为“客户端应用程序是 c#”

如果你真的想强制你的调用者指定这个头,你应该在你的代码中检查这个头,如果它不存在,你应该返回一个错误代码 400 并说明你的期望。

在任何情况下,这都不应该是服务器关心的问题。您的 api 应设计为独立于平台。

【讨论】:

  • 我想使用调用者的自然语言本地化资源。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-28
  • 1970-01-01
  • 2018-11-14
  • 2018-09-07
  • 1970-01-01
  • 1970-01-01
  • 2016-09-24
相关资源
最近更新 更多