如何在不使用动词的情况下创建用于下载文件的URI?

时间:2019-06-10 23:17:08

标签: rest api asp.net-web-api restful-url

我正在尝试使用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?

1 个答案:

答案 0 :(得分:1)

  

获取/ firmware / {id} / files / 文件名

非常适合REST非动词命名法。另外,firmware既是单数又是复数,因此在您的URI中比固件更有意义。

只有一个文件可用,这些选项还避免了动词

  

/ firmware / {id} / file (文件名在URI中并不重要)

     

/ firmware / {id} / 文件名 (如果要显示名称)

     

/ firmware / {id} / file / 文件名 (两者混合)