热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

调用增加视图时的HTTP动词GET或PATCH或POST或PUT

如何解决《调用增加视图时的HTTP动词GET或PATCH或POST或PUT》经验,为你挑选了1个好方法。

我有这样的终点

/profiles/1

我想获取ID为1的配置文件,但同时将访问的属性增加1。该属性作为对象的一部分出现。我应该使用哪个HTTP动词来获取访问属性增加1的配置文件对象。

每次获取ID为1的配置文件时,访问的属性都会增加1。



1> cassiomolin..:

我应该使用哪个HTTP动词来获取访问属性增加1的配置文件对象?

GET方法旨在用于数据检索,因此是一种候选方法。引用RFC 7231,该文档当前定义了HTTP / 1.1协议的语义和内容:

4.3.1。得到

GET方法请求传输目标资源的当前所选表示。GET是信息检索的主要机制,也是几乎所有性能优化的重点。[...]

GET方法还被定义为安全只读)和幂等使用该方法的多个相同请求与单个此类请求的效果相同)。

但是它仍然在桌子上。再次引用RFC 7231(重点是我的):

4.2.1。安全方法

如果请求方法的定义语义本质上是只读的,则将其视为“安全”。也就是说,由于将安全方法应用于目标资源,客户端不会请求也不会期望原始服务器上的任何状态更改。[...]

安全方法的这种定义不会阻止实现包含可能有害的行为,该行为不是完全只读的,或者在调用安全方法时会引起副作用。 但是,重要的是客户没有要求其他行为,因此不能追究其责任。例如,大多数服务器在每次响应完成时都将请求信息附加到访问日志文件中,而不管采用哪种方法,即使日志存储空间可能已满并使服务器崩溃,这也被认为是安全的。[...]

4.2.2。幂等方法

如果使用该方法的多个相同请求在服务器上的预期效果与单个此类请求的效果相同,则该请求方法被视为“幂等”。[...]

就像保险柜的定义一样,幂等属性仅适用于用户所要求的内容;服务器可以自由地单独记录每个请求,保留版本控制历史记录或为每个幂等请求实现其他非幂等副作用。

假设您要计算检索配置文件的次数,则可以将其附加到GET操作上。但是,您可能希望避免例如在机器人击中端点时增加计数器。

因此,在某些情况下,GET允许请求具有副作用。但是,重要的是,客户端没有请求其他行为,因此不能追究其责任:服务器的职责是服务器的责任。

最终,说HTTP不在乎下面的存储也很重要,因此您可以将视图计数存储在与概要文件数据相同的表中,也可以存储在不同的表或完全不同的数据库中。然后一起检索所有数据,或使用不同的端点作为视图计数。


@Angad _“幂等与服务器上资源状态产生的影响有关,与客户端收到的响应状态代码无关”。这是我的[其他答案](/sf/ask/17360801/)的报价。我的意思是,幂等性与服务器上资源的状态有关,而与状态代码无关。考虑客户端执行一个“ DELETE”请求来删除资源。资源被删除,服务器返回“ 204”。然后客户端重复相同的“ DELETE”请求,并且由于资源已被删除,服务器返回“ 404”。
@Angad`DELETE`请求是幂等的,因为单个请求(删除资源)的效果与多个请求的效果相同,尽管状态码不同。
@Angad _“幂等属性仅适用于用户请求的属性” _这是[RFC 7231](https://tools.ietf.org/html/rfc7231)中的引号,它定义了幂等性。当客户请求一个配置文件的表示(使用安全且幂等的“ GET”)时,该客户应该没有任何副作用,因为客户没有要求任何其他行为,也不能对此负责。但是,在配置文件视图计数器的情况下,服务器可以将计数器递增,作为配置文件资源的语义的一部分。
推荐阅读
author-avatar
唐静静y
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有