rest - 在 REST API 中支持多种语言

标签 rest asp.net-web-api

我有一组城市,我正在为其创建一个 REST API(我的第一个 REST API)。每个城市都有许多与语言无关的东西,例如建国日期和人口数量。城市也有一些取决于语言的东西,例如标题和简短描述。在内部,城市文件具有以下格式:

{
   "population": 9042,
   "name": {
       "en": "Berlin",
       "nl": "Berlijn",
       // ...
   },
   // ...
}

我的 API 的用户总是希望只查看特定语言的城市信息,然后返回如下内容:

{
   "population": 9042,
   "name": Berlin,
   // ...
}

我已通过 /cities/:id/:language_code 使这些访问,例如 cities/123/en。现在我想实现城市列表:GET/cities。那里也需要请求的语言。由于这会导致 /cities/:language_code,我的印象是把它放在 url 的末尾不是一个好主意,并且怀疑我会更好地使用 /en/cities/...随便....

这通常如何在 REST API 中完成?有什么大的、很好实现的 API 是一个很好的例子吗?

最佳答案

REST API 基于 HTTP 协议(protocol),因此它们可以使用 header ,这些 header 通常用于定义首选语言环境。

所以我会为此使用 Accept-Language 参数。

# Request
GET /cities/.... HTTP/1.1
Host: www.example.org
Accept-Language: en,en-US,fr;q=0.6

愿意:

{
   "population": 9042,
   "name": Berlin,
   // ...
}

关于rest - 在 REST API 中支持多种语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25353854/

相关文章:

java - [PlayFramework 2.5][Java] JSON post 请求绑定(bind)到表单中

json - java.lang.NoSuchMethodError : com. fastxml.jackson.core.JsonFactory.requiresPropertyOrdering()Z

rest - 为什么 HBase Java 客户端比 REST/Thrift 慢

java - 有人将 Leonard Richardson 和 Sam Ruby 所著的 "RESTful Web Services"书中的 reSTLet 示例更新为 reSTLet 2.0 吗?

c# - 查询运行构建的代理

java - 从多个 REST 端点组装 Swagger 文档的最佳方式

javascript - 用户或管理员尚未同意使用该应用程序 - 为此用户和资源发送交互式授权请求

c# - Web Api 用户身份返回 null

asp.net - "The requested resource does not support http method ' 发布'

c# - web api 2 ExceptionHandlerFilter OnExceptionAsync 未触发