我有幸重新设计我们的主要项目公共 api。最初的目标是制作一个宁静的 api,[在添加了许多额外的功能之后] 最终成为了 rest/json-rpc 不匹配。
所以,是时候重新思考和重新设计了。但是我需要一些关于如何解决一些更复杂操作的想法。
基本的CURD操作已经实现并且工作正常。
每个资源都由分层 slug 访问:
GET /project/fubar/fishes
还添加了语言环境和输出格式:
GET /project/fubar/fishes.en-us.json
好的,现在到棘手的部分:
项目中的基本资源类似于具有标题和子节点的文件夹。“文件夹”可以有子文件夹和项目。
将新文件夹或项目添加到文件夹的最佳做法是什么?
需要 PUT/PATCH 来更新有关文件夹的信息,而不是将资源链接到它?需要 POST 来创建新文件夹。
POST /project/fubar/fishes
再补充一点,区分文件夹到文件夹和项目到文件夹链接操作的最佳做法是什么。请记住,链接可以并且将有另一个名称,然后是目标。类似于 POSIX 系统中的符号链接。
我的想法是(对现有资源):
POST /project/fubar/fishes
{
link: /project/fubar/dogs
title: DOGS!
type: folder
}
反过来呢?取消链接?
DELETE /project/fubar/fishes/dogs
但这是一个好的设计还是稍后会回到我身边?