php put delete,REST API - 为什么要使用PUT DELETE POST GET?

RE表示S tate T传输的想法不是以尽可能最简单的方式访问数据。

您建议使用post请求来访问JSON,这是访问/操作数据的完美有效方式。

REST是一种有意义的数据访问方法。当您在REST中看到请求时,它应立即显示数据发生的情况。

例如:

GET: /cars/make/chevrolet

可能会返回一系列雪佛兰汽车。 一个好的REST api甚至可能在查询字符串中包含一些输出选项,?output=json或者?output=html允许访问者决定应该编码信息的格式。

有点思考如何合理地整合数据类型为REST API后,我已经得出结论,最好的办法明确指定的数据类型是通过已存在的文件扩展名,例如.js,.json,.html,或.xml。丢失的文件扩展名默认为默认格式(例如JSON); 不受支持的文件扩展名可能会返回501 Not Implemented状态代码。

另一个例子:

POST: /cars/

{ make:chevrolet, model:malibu, colors:[red, green, blue, grey] }

可能会在数据库中创建一个新的雪佛兰malibu与相关的颜色。我说可能因为REST api不需要与数据库结构直接相关。它只是一个屏蔽接口,以便保护真正的数据(将其视为数据库结构的访问器和更改器)。

现在我们需要讨论幂等性问题。通常,REST 通过HTTP 实现CRUD。HTTP使用GET,PUT,POST和DELETE为请求。

一个非常简单的REST实现可以使用以下CRUD映射:

Create -> Post

Read   -> Get

Update -> Put

Delete -> Delete

此实现存在问题:Post被定义为非幂等方法。这意味着后续调用相同的Post方法将导致不同的服务器状态。获取,放置和删除是幂等的; 这意味着多次调用它们会导致相同的服务器状态。

这意味着请求如下:

Delete: /cars/oldest

实际上可以实现为:

Post: /cars/oldest?action=delete

Delete: /cars/id/123456

如果你调用一次,或者你调用它1000次,将导致相同的服务器状态。

处理oldest物品移除的更好方法是请求:

Get: /cars/oldest

并使用ID结果数据发出delete请求:

Delete: /cars/id/[oldest id]

此方法的一个问题是,如果/cars在/oldest请求的时间和delete发布时间之间添加了另一个项目。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值