我正在尝试使用ASP.NET Core开发RESTful API。根据RESTful准则,我应该对资源名称使用复数名词,并将动词置于基本URL之外。
这看起来很简单,但也许并非如此。
我目前拥有firmwares
和以下URI:
1.GET /firmwares - get list of firmwares (name, version, date)
2.GET /firmwares/{id} - get details of firmware with Id (name, version, date)
3.POST /firmwares - create a new firmware in DB name, version, date) and upload a file
4.PATCH /firmwares/{id} - change name of firmware with Id
5.DELETE /firmwares/{id} - deletes record from DB and deletes a file
现在,我需要添加一个端点来下载文件。哪个URI消除了GET /firmware/{id}/download
之类的动词?
这些是我想到的
GET /firmware/{id}?action=download
GET /firmware/{file_name}
GET /firmware/{id}/files
您(已经实现了此功能)能否提供一个更符合REST的URI?
答案 0 :(得分:1)
此
获取/ firmware / {id} / files / 文件名
非常适合REST非动词命名法。另外,firmware既是单数又是复数,因此在您的URI中比固件更有意义。
只有一个文件可用,这些选项还避免了动词
/ firmware / {id} / file (文件名在URI中并不重要)
/ firmware / {id} / 文件名 (如果要显示名称)
/ firmware / {id} / file / 文件名 (两者混合)