簡體   English   中英

ASP.NET Core Web.API中的攔截調用者語言

[英]Intercept caller language in ASP.NET Core Web.API

有沒有辦法在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");
    }

謝謝大家。

如果您是指自然語言(例如英語),則按語言,客戶端可以在http標頭content-language:en-us指定此content-language:en-us

如果您指的是編程語言,則http規范中沒有定義標准的標頭來執行此操作。

一些客戶端包含一個user-agent標頭,以告訴您發出請求的是哪種應用程序。 但並非所有客戶都這樣做。

如果您可以控制呼叫者,則在呼叫者發出表示語言的請求時,您可以設置自己的http標頭。

對於例如X-Caller-Language:cs

並在您的Web Api上將此標頭解釋為“客戶端應用程序為c#”

並且,如果您確實要強制調用者指定此標頭,則應在代碼中檢查此標頭,如果不存在,則應返回錯誤代碼400,其中包含有關您期望的說明。

在任何情況下,服務器都不必擔心。 您的api應該設計為獨立於平台。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM