RESTAPI 命名问题请教

1.正在写邮件服务,遇到一个问题,常规的命名好做

  • 获取:/emails/{id} get

  • 新建、更新:/email/ post

  • 删除:/emails/{id} delete

2.问题:点击按钮发送邮件这个如何命名?

  • 这样吗?/email/{id}/send 但是restful命名中不应该有动词吧

  • 或者是我理解的不对,restful接口是幂等的,发送邮件这种操作算不幂等吧?是否不适合使用restful风格的命名方式?

3.补充:参考了git的merge操作,直接这样命名的
clipboard.png

阅读 4.1k
3 个回答

1.在RESTful架构中,每个网址代表一种资源(resource),所以网址中不能有动词,只能有名词,而且所用的名词往往与数据库的表格名对应。一般来说,数据库中的表都是同种记录的"集合"(collection),所以API中的名词也应该使用复数。
2.HTTP幂等方法,是指无论调用多少次都不会有不同结果的 HTTP 方法。
你可以阅读下 阮一峰 的 RESTful API 设计指南

发送邮件就是新建一个“发送件”。

理论上你的邮件不可能一个模型就搞定了,至少要分出发送、接收、以及草稿。

实际上restful接口并不能解决所有场景, 我觉得 email/{id}/send 或 email/send 按自己方式可以用

URI中不应该出现动词,动词应该使用HTTP方法表示,但是如果无法表示,也可使用动词,例如:search没有对应的HTTP方法,可以在路径中使用search,更加直观;

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进