规范统一的 API 是项目设计的基石。DolphinScheduler 的 API 遵循 REST ful 标准,REST ful 是目前最流行的一种互联网软件架构,它结构清晰,符合标准,易于理解,扩展方便。
本文以 DolphinScheduler 项目的接口为样例,讲解如何构造具有 Restful 风格的 API。
REST 即为 Representational State Transfer 的缩写,即“表现层状态转化”。
“表现层”指的就是“资源”。资源对应网络上的一种实体,例如:一段文本,一张图片,一种服务。且每种资源都对应一个特定的 URI。
Restful URI 的设计基于资源:
task-instances
、groups
等;group
、groups/{groupId}
;/instances/{instanceId}/tasks
;/instances/{instanceId}/tasks/{taskId}
;我们需要通过 URI 来定位某种资源,再通过 Method,或者在路径后缀声明动作来体现对资源的操作。
通过 URI 来定位要资源,通过 GET 表示查询。
alter-groups
。Method: GET
/api/dolphinscheduler/alert-groups
alter-group
。Method: GET
/api/dolphinscheduler/alter-groups/{id}
Method: GET
/api/dolphinscheduler/projects/{projectId}/tasks
上述的关于查询的方式都表示分页查询,如果我们需要查询全部数据的话,则需在 URI 的后面加 /list
来区分。分页查询和查询全部不要混用一个 API。
Method: GET
/api/dolphinscheduler/alert-groups/list
通过 URI 来定位要创建的资源类型,通过 POST 表示创建动作,并且将创建后的 id
返回给请求者。
alter-group
:Method: POST
/api/dolphinscheduler/alter-groups
Method: POST
/api/dolphinscheduler/alter-groups/{alterGroupId}/tasks
通过 URI 来定位某一资源,通过 PUT 指定对其修改。
Method: PUT
/api/dolphinscheduler/alter-groups/{alterGroupId}
通过 URI 来定位某一资源,通过 DELETE 指定对其删除。
alterGroupId
对应的资源:Method: DELETE
/api/dolphinscheduler/alter-groups/{alterGroupId}
Method: POST
/api/dolphinscheduler/alter-groups/batch-delete
除增删改查外的操作,我们同样也通过 url
定位到对应的资源,然后再在路径后面追加对其进行的操作。例如:
/api/dolphinscheduler/alert-groups/verify-name
/api/dolphinscheduler/projects/{projectCode}/process-instances/{code}/view-gantt
参数分为两种,一种是请求参数(Request Param 或 Request Body),另一种是路径参数(Path Param)。
参数变量必须用小驼峰表示,并且在分页场景中,用户输入的参数小于 1,则前端需要返给后端 1 表示请求第一页;当后端发现用户输入的参数大于总页数时,直接返回最后一页。
整个项目的 URI 需要以 /api/<project_name>
作为基础路径,从而标识这类 API 都是项目下的,即:
/api/dolphinscheduler