首页 > 其他分享 >基本的 HTTP 方法GET、POST、PUT 和 DELETE

基本的 HTTP 方法GET、POST、PUT 和 DELETE

时间:2023-07-28 15:08:05浏览次数:36  
标签:www HTTP GET PUT http POST com

(目录)

一、方法介绍

1.1 GET

GET 方法用于从服务器检索资源。这是一种安全的方法,因为它不会以任何方式改变资源的状态。GET 方法是幂等的,因此多次调用此方法将始终给出相同的结果。

HTTP GET 'http://www.timi.com/users'
HTTP GET 'http://www.timi.com/users?size=20&page=5'
HTTP GET 'http://www.timi.com/users/123'
HTTP GET 'http://www.timi.com/users/123/address'

1.2 POST

POST 方法用于在服务器上的资源集合中创建新资源。

需要注意的是,POST 是非幂等的。因此,调用两个相同的 POST 请求将导致在服务器上创建重复的信息。

HTTP POST'http://www.timi.com/users/123'
HTTP POST'http://www.timi.com/users/123/address'

1.3 PUT

PUT 用于更新服务器上的现有资源,并且更新完整资源。如果资源不存在,PUT 可能会决定创建新资源。PUT 方法是幂等的,因此多次调用此方法总是会多次更新同一资源。

HTTP POST 'http://www.apidomain.com/users/123'
HTTP POST 'http://www.apidomain.com/users/123/accounts/456'

1.4 PATCH

PATCH用于更新服务器上现有的资源,它更新资源的一部分。如果资源不存在,PUT 可能会决定创建新资源。正如 PUT 方法一样,PATCH 也是幂等的。

HTTP PATCH 'http://www.apidomain.com/users/123'
HTTP PATCH 'http://www.apidomain.com/users/123/accounts/456'

PUT 方法主要完全替换整个现有资源,但 PATCH 部分更新现有资源。PATCH 方法不能替代 PUT 方法。它应用增量 (diff),而不是替换整个资源。

1.5 DELETE

DELETE方法用于从服务器中删除资源。它删除由 Request-URI 标识的资源。DELETE 方法是幂等的。

二、优势

PUT、PATCH 和 DELETE能请求的POST也可以进行请求,那么为什么不用POST来代替前面的三个方式呢,这三个方式的优势在哪?

2.1 幂等性

首先:HTTP 中有四种基本方法:GET、POST、PUT 和 DELETE。大部分时间我们都使用 GET。它用于任何安全的事情,不会引起任何副作用。GET 能够被添加书签、缓存、链接到代理服务器并通过代理服务器传递。这是一个非常强大的操作,一个非常有用的操作。

但相比与POST的话GET就不是那么强大,POST 可能是最强大的操作,GET能干的它都可以去做,基本上很多人都在一个POST打天下。然而,POST对可能发生的事情没有做任何限制。也就是说在没有缓存、没有按钮、没有询问用户的情况下等情况下,你无法对它做任何操作。但是,浏览器可能会查看页面上的所有链接并预获取它们,或者预获取认为接下来最有可能被关注的链接。

PUT 和 DELETE 位于 GET 和 POST 之间。PUT 或 DELETE 与 POST 之间的区别在于 PUT 和 DELETE 是幂等的,而 POST 不是

PUT 和 DELETE 假设你想在以下位置创建一个新页面 http://www.timi.com/test.html,因此你输入内容并将这个页面放在该URL 中。接着服务器在你提供的 URL处创建该页面。但是,由于某种原因你的网络连接中断了,这时不确定请求是否通过,可能是网络慢,可能代理服务器有问题。PUT 方法完全可以再试一次,或者再试一次——想试多少次就试多少次。因为将同一个文档放入同一个URL 十次与放入一次没有任何不同。DELETE也一样。你可以删除十次,这与删除一次是一样的。

POST POST 每次可能会导致不同的情况发生。J假设你正在通过按购买按钮从在线商店结账。如果你再次发送该 POST 请求,最终可能会再次购买购物车中的所有商品。如果再次发送,那么恭喜你,你买了3个这玩意。

2.2 URL

2.2.1 效率

大部分人都在用POST做更新、删除操作,这中操作是没啥问题的,但效率不如使用PUT、DELETE。PUT 和 POST 之间还有一个非常重要的区别。假设要创建一个新页面,然后希望它位于某个 URL,比如:http://www.timi.com/test.html. 在完全支持 PUT的情况下这些操作都可以通过用户名和密码进行保护。

相比之下,如果输入 POST http://www.timi.com/test.html.,则没有任何内容可以接收到 POST请求。一般来说,当客户端想要选择 URL 时,可以使用 PUT 来创建新文档。当发布到某个现有 URL 时,可以使用 POST 创建新文档。

标签:www,HTTP,GET,PUT,http,POST,com
From: https://blog.51cto.com/TiMi/6882761

相关文章

  • 异步http响应与异步任务处理
    Golang线程池实现http异步响应参考链接https://www.cnblogs.com/aaronhoo/p/16364492.html使用Gin框架实现异步任务处理功能参考链接https://www.php.cn/faq/564681.html......
  • HDC.Together2023 HarmonyOS学生公开课议程抢先看!
     未来已来,见证相遇万众瞩目的HarmonyOS学生公开课于8月6日9:30正式起航关注HarmonyOS生态前景聚焦HarmonyOS新技术畅谈HarmonyOS未来把握时代发展机遇,让我们同心而行和HarmonyOS一起创造无限可能   ......
  • 《http篇》通过curl库实现http服务
    编译和引用参考链接:https://blog.csdn.net/weixin_44122235/article/details/128969128参考链接里写的非常详细,虽然我只参考了编译和引用的部分,还是建议大家看一下。下载官方(旧):https://curl.haxx.se/download.html官方(新):https://curl.se/download.htmlgithub:https://github.......
  • $.get遇到null的异常
    $.get不指定数据格式默认会智能解析成相应类型,如果后端返回null,会导致解析异常,最好加上异常捕捉$.get(api,{},function(result){});$.get(api,{},function(result){},"json");资料地址:https://www.w3cschool.cn/jquery/ajax-get.html加上捕捉的完整写法$.get(api,{},fun......
  • apache net FTPClient 通过 Http 代理访问 FTP服务器
    前言因为特殊原因,需要在服务器上安装一个代理程序,通过代理程序才能访问到安全域内的一台指定IP服务器。该服务器上安装了FTP服务,需要用程序读写FTP上的文件。之前在不使用代理程序的服务器上测试FTP连接,没有任何问题,换到这台服务器上有问题,所以记录一下处理过程。文章目录前言问......
  • ORA-00845:系统不支持MEMORY_TARGET
    错误信息【汉】ORA-00845:系统不支持MEMORY_TARGET【英】ORA-00845:MEMORY_TARGETnotsupportedonthissystem例在CentOS7操作系统上启动数据库时报错。版本Oracle【11.2.0.3.0】、【11.2.0.1.0】、【11.2.0.4.0】原因原因有两种可能,一是因为操作系统不支持参数【MEMORY_TARGET......
  • http的参数和请求体
    在HTTP中,参数(parameters)和请求主体(body)是两种不同的方式用于向服务器传递数据。它们有不同的特点和适用场景。参数(Parameters):参数通常通过URL的查询字符串(querystring)传递,也就是在URL中使用?符号,后面跟着key=value形式的参数对,多个参数用&符号分隔。例如:http://example.com......
  • Android studio DerInputStream.getLength(): lengthTag=109, too big.Failed to
    AndroidStudio:解决DerInputStream.getLength():lengthTag=109,toobig.Failedto的问题简介在使用AndroidStudio开发Android应用程序时,你可能会遇到DerInputStream.getLength():lengthTag=109,toobig.Failedto的错误。该错误通常发生在尝试使用包含较大数据的......
  • Java 连接redis at java.io.FilterOutputStream.flush(FilterOutputStream.java:1
    了解RedisRedis(REmoteDIctionaryServer)是一个开源的、基于内存的数据结构存储系统,它支持多种数据结构,如字符串、哈希、列表、集合、有序集合等。Redis提供了丰富的功能和高性能的数据操作,使其成为一个流行的数据库和缓存解决方案。Redis提供了多种语言的客户端库,使开发人员......
  • springboot上传图片后通过http访问图片
    需要上传图片或pdf文件,放在服务器本地磁盘中,比如window服务器的D:/YG/盘符下,此时想要通过http的方式直接访问图片或pdf 1.图片存储在本地磁盘,实现WebMvcConfigurer接口添加本地静态资源访问过滤2.图片存储在本地磁盘,nginx动静分离  第一种方式:@Configurationpubli......