标题有点误导。我必须构建一个新的 Web API 应用程序来为我们也在构建的一堆不同的客户端提供服务。我不需要本地化 API 中的参数或路由。
基本上,客户端会请求指定语言的资源,Web API 会返回结果。
我唯一的要求是本地化资源将存储在 SQL DB 而不是资源文件中。
由于 Web API 仅返回本地化结果并且不需要本地化,我应该尝试遵循 .NET 本地化实践还是应该创建一个简单的缓存表查找函数来模仿本地化例程?
请您参考如下方法:
从技术上讲,您如何在服务器端保存本地化信息对客户端应用程序(调用 API)无关紧要。您可以将其保存在数据库中,也可以将其保存在资源文件中;一切都取决于系统的架构。
但是您可以通过两种方式解决您的需求:
- 将区域设置放在 api url 中:客户端应用程序可以提供适当的区域设置,如下所示:
获取 https://apiserver.com/api/v1.0.0/en-GB/cities
获取 https://apiserver.com/api/v1.0.0/fr-CA/cities
获取 https://apiserver.com/api/v1.0.0/en-US/cities
在服务器端你可以配置你的方法如下:
[Route("v1.0.0/{locale}/cities")]
[HttpGet]
public List<City> GetCities(string locale)
{
// Get cities by locale
return cities;
}
在 HTTP header 中传递语言环境信息。在服务器端读取 header 中传递的语言环境并相应地发送响应:
public WebRequest GetWebRequest(Uri uri) { WebRequest request = base.GetWebRequest(uri); request.Headers.Add("locale", "en-GB"); return request; }
