特定数据子类别的REST API端点命名

问题描述

说我有一个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的标准化机制。在某些情况下,设计层次结构以便可以利用它是一个非常好的主意。

否则,这很像选择一个变量名-机器不在乎,因此您只想选择对其他人满意的拼写;换句话说,请确保您与本地约定一致。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...