REST API 特定数据子类别的端点命名
REST API Endpoint naming for specific sub-categories of data
假设我有一个 API(与其他实体一起)处理任务。我的端点看起来像
GET /api/tasks //List all tasks
POST /api/tasks //Create a new task
GET /api/task/1 //Fetch a single task
PUT /api/task/1 //Update a single Tasks
GET /api/task/1/comments //Get the comments of task 1
我还需要一些完全不同格式的任务数据子集:
user-tasks
,用户的任务,但根据时间表调整。
sync-data
,所有需要发送到外部系统的特殊引用的任务
我可以看到用户数据可能存在于用户层次之外,例如
GET /api/user/1/tasks //tasks for this user with dedicated
但是 sync-data
呢?如果这属于 tasks
等级制度或它打算用于的系统,例如
GET /api/ExternalSystemA/tasks //tasks for synchronization
REST 不关心您对 URI 使用的拼写约定。任何符合RFC 3986中产生式规则的拼写都可以。
Relative resolution 提供了一种标准化机制,用于根据上下文和相对引用计算新的 URI。设计您的层次结构以便您可以利用它,在某些情况下,这是一个非常好的主意。
否则,这很像选择一个变量名——机器不关心,所以你只想选择其他人满意的拼写;换句话说,确保您符合当地惯例。
假设我有一个 API(与其他实体一起)处理任务。我的端点看起来像
GET /api/tasks //List all tasks
POST /api/tasks //Create a new task
GET /api/task/1 //Fetch a single task
PUT /api/task/1 //Update a single Tasks
GET /api/task/1/comments //Get the comments of task 1
我还需要一些完全不同格式的任务数据子集:
user-tasks
,用户的任务,但根据时间表调整。sync-data
,所有需要发送到外部系统的特殊引用的任务
我可以看到用户数据可能存在于用户层次之外,例如
GET /api/user/1/tasks //tasks for this user with dedicated
但是 sync-data
呢?如果这属于 tasks
等级制度或它打算用于的系统,例如
GET /api/ExternalSystemA/tasks //tasks for synchronization
REST 不关心您对 URI 使用的拼写约定。任何符合RFC 3986中产生式规则的拼写都可以。
Relative resolution 提供了一种标准化机制,用于根据上下文和相对引用计算新的 URI。设计您的层次结构以便您可以利用它,在某些情况下,这是一个非常好的主意。
否则,这很像选择一个变量名——机器不关心,所以你只想选择其他人满意的拼写;换句话说,确保您符合当地惯例。