REST API-为什么使用PUT DELETE POST GET?

REST API-为什么使用PUT DELETE POST GET?,第1张

REST API-为什么使用PUT DELETE POST GET?

的想法 RE 表象 小号 泰特 Ť 转让(BOT)是不是在可能的最简单的方法访问数据

您建议使用发布请求来访问JSON,这是访问/处理数据的一种完全有效的方法。

REST是一种 有意义 的数据访问方法。当您在REST中看到请求时,应该立即了解数据的情况。

例如:

GET: /cars/make/chevrolet

可能会返回雪佛兰汽车的清单。 好的REST
api甚至可以在querystring中包含一些输出选项,例如

?output=json
?output=html
,这将允许访问者决定信息应以哪种格式编码。

关于如何合理地一体化的数据类型为REST
API比特思考后,我已经得出结论,最好的办法明确指定的数据类型是通过已存在的文件扩展名,例如

.js
.json
.html
,或
.xml
。缺少的文件扩展名将默认为默认格式(例如JSON);不支持的文件扩展名可能返回
501NotImplemented
状态码。

另一个例子:

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

可能会在db中创建具有关联颜色的新雪佛兰马里布。我说这 很可能 是因为REST
api不需要与数据库结构直接相关。它只是一个屏蔽接口,因此可以保护真实的数据(例如,它像数据库结构的访问器和更改器一样被保护)。

现在我们需要讨论幂等问题。通常,REST 通过HTTP
实现CRUD。HTTP使用

GET
PUT
POST
DELETE
为请求。

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

Create -> PostRead   -> GetUpdate -> PutDelete -> Delete

此实现存在一个问题:Post被定义为非幂等方法。这意味着相同Post方法的后续调用将导致 不同的
服务器状态。Get,Put和Delete是幂等的;这意味着多次调用它们应导致相同的服务器状态。

这意味着请求如下:

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
发布时间之间添加了另一个项目。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5018465.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-15
下一篇2022-11-14

发表评论

登录后才能评论

评论列表(0条)

    保存