我正在为文件存储设计RESTful API,并且无法找到将URL组织到操作的最佳方法。
文件可以分组到文件夹,但需要能够获取所有文件。 指南建议使用以下URL来获取特定文件夹的文件。
GET /folders/{folderName}/files
但应该用什么来获取所有文件? GET /files
或GET /folders/files
?
此外,Google云端硬盘具有一些类似的功能,他们使用不同的方法
GET files/{folderName}/children
答案 0 :(得分:2)
正如您所注意到的,这可以从一个API设计师到另一个API设计师。
如果我遇到这个问题,我会考虑所有用例并找出最有效的方法。
看起来以下内容可以满足您的需求:
GET / Retrieves all files and folders
GET /{folderId} Retrieves all contents of said folderId (folders and files)
GET /{fileId} Retrieves the file
GET /{folderId}/{folderId} Same as above, but for nested folder
GET /{folderId}/{folderId}/{fileId} Retrieves the file
此模式可以继续,但嵌套文件结构是(注意URL长度有限制)
然后,如果您有一个独特的要求,例如您只需创建一个新的api端点。
GET /files/ Retrieves all files
GET /files/?filter="*.txt" Retrieves all text files
所以回答你的确切问题:
但应该用什么来获取所有文件? GET /文件或GET /文件夹/文件
我倾向于/ files而不是/ folders / files。 / folders / files作为api使用者没有多大意义。