RESTful架构应该遵循统一的接口原则,应该使用标准的HTTP方法如GET和POST,并且遵循这些方法的语义
方法 | 语义 |
|---|---|
GET | 获取指定资源 |
DELETE | 删除指定资源 |
POST | 发送数据给服务器,依据HTTP 1.1规范中的描述,结合实际项目开发经验,POST经常为了以统一的方法来涵盖以下功能:1在公告板,新闻组,邮件列表或类似的文章组中发布消息2通过注册新增用户,3向数据处理程序提供一批数据,例如提交一个表单 |
PUT | 使用请求中的负载创建或者替换目标资源。PUT和POST的区别在于PUT是幂等的,而POST不是。幂等的含义可以理解为调用一次与连续调用多次是等价的(没有副作用或副作用不变) |
方法 | 幂等性 | 幂等性分析 |
|---|---|---|
GET | 具备幂等性 | 用于获取资源,没有副作用,所以是幂等的。请注意,这里强调的是一次和N次并不是说每次请求的结果相同,而是每次请求不会产生不同的副作用。 |
DELETE | 具备幂等性 | 用于删除资源,有副作用,但它应该满足幂等性,调用一次和N次对系统产生的副作用是相同的 |
POST | 不具备幂等性 | POST所指向资源并非POST要创建的资源本身,而是POST创建资源的接收者,比如POST:/news的含义是在news新闻组这个资源分类下新建一条新的新闻,所以两次相同的POST请求会在服务器端创建两份新的资源,它们是不同的。所以,POST方法不具备幂等性 |
PUT | 具备幂等性 | PUT对应的资源是要创建或更新的资源本身,语义是创建或更新,对同一资源进行多次PUT的副作用和一次PUT是相同的,因此,PUT方法具有幂等性 |