用于不同级别资源详细信息的RESTAPI URI模式

用于不同级别资源详细信息的RESTAPI URI模式,rest,api-design,Rest,Api Design,我有一个资源“用户”,我们为其存储以下详细信息: { "id": 123, "name": "John Doe", "address": { "line1": "411, ABC street" "city": "XYZ" "country": "ZZZ" } } 我需要三个API来列出我的用户资源: 返回用户ID列表的API API返回具有ID和名称的用户列表 API返回包含所有信息(即id、姓名、地址等)的用户列表 对于上面的每一个,我应该使用什么

我有一个资源“用户”,我们为其存储以下详细信息:

{ 
  "id": 123,
  "name": "John Doe",
  "address": {
    "line1": "411, ABC street"
    "city": "XYZ"
    "country": "ZZZ"
  }
}
我需要三个API来列出我的用户资源:

  • 返回用户ID列表的API
  • API返回具有ID和名称的用户列表
  • API返回包含所有信息(即id、姓名、地址等)的用户列表

  • 对于上面的每一个,我应该使用什么URI模式?

    因为所有三个请求都是针对相同的资源的,所以所有三个请求都应该使用相同的URL。例如:

    /users
    
    如果客户端请求不同的表示形式,则应使用正确的HTTP头。您应该定义标识不同表示的供应商类型。例如:

    /users
    
    要获取仅包含ID的表示,请执行以下操作:

    GET /users
    Accept: application/vnd.acme.users.ids+json
    
    要获取包含ID和名称的表示,请执行以下操作:

    GET /users
    Accept: application/vnd.acme.users.idsandnames+json
    
    要获得包括所有内容的代表:

    GET /users
    Accept: application/vnd.acme.users+json