HTTP协议的8种请求方式及常用请求方式的解析

news2024/10/5 17:25:12

前言

 今天想起来写这一篇文章,主要是无意中想起来当初面试的时候我的以为面试官曾问过我这个问题,因此我对此整理一下,希望对大家有所帮助。

简单介绍

TTP是超文本传输协议,其定义了客户端与服务器端之间文本传输的规范。HTTP默认使用80端口,这个端口指的是服务端的端口,而客户端使用的端口是动态分配的。当我们没有指定端口访问时,浏览器会默认帮我们添加80端口。我们也可以自己指定访问端口如:http://www.ip138.com:80。 需要注意的是,现在大多数访问都使用了HTTPS协议,而HTTPS的默认端口为443,如果使用80端口访问HTTPS协议的服务器可能会被拒绝。

HTTP请求的方法:

HTTP/1.1协议中共定义了八种方法(有时也叫“动作”),来表明Request-URL指定的资源不同的操作方式

HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。

HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法

1、OPTIONS

返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送‘*’的请求来测试服务器的功能性

2、HEAD

向服务器索与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以再不必传输整个响应内容的情况下,就可以获取包含在响应小消息头中的元信息。

3、GET

向特定的资源发出请求。注意:GET方法不应当被用于产生“副作用”的操作中,例如在Web Application中,其中一个原因是GET可能会被网络蜘蛛等随意访问。Loadrunner中对应get请求函数:web_link和web_url

4、POST

向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 Loadrunner中对应POST请求函数:web_submit_data,web_submit_form

5、PUT

向指定资源位置上传其最新内容

6、DELETE

请求服务器删除Request-URL所标识的资源

7、TRACE

回显服务器收到的请求,主要用于测试或诊断

8、CONNECT

HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

注意:

1)方法名称是区分大小写的,当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405(Mothod Not Allowed);当服务器不认识或者不支持对应的请求方法时,应返回状态码501(Not Implemented)。

2)HTTP服务器至少应该实现GET和HEAD/POST方法,其他方法都是可选的,此外除上述方法,特定的HTTP服务器支持扩展自定义的方法。

在 Web 服务的开发中,HTTP 协议是最常使用的协议。其中,常见的 HTTP 请求方式有四种:POSTGETDELETE 和 PUT

1. HTTP 请求方式

HTTP(Hypertext Transfer Protocol)是一种在计算机网络中用于传输超媒体文档的应用层协议。HTTP 协议定义了客户端和服务器之间的通信规则,并规定了客户端向服务器发送请求时需要采用的请求方法(请求方式)。

常见的 HTTP 请求方式有四种:

  • POST(添加)
  • GET(查询)
  • DELETE(删除)
  • PUT(修改)

下面将分别对这四种请求方式进行详细介绍。

2. POST 请求

POST 请求用于向指定资源提交数据,通常会导致服务器端的状态发生变化。例如,在 Web 表单中填写用户信息并提交时,就是使用 POST 请求方式将表单数据提交到服务器存储。

使用 POST 请求方式提交的数据会被包含在请求体中,而不像 GET 请求方式那样包含在 URL 中。因此,POST 请求可以提交比 GET 更大的数据量,并且相对更安全。

2.1. 例子

下面是一个 POST 请求的例子:

 
POST /api/user HTTP/1.1
Host: example.com
Content-Type: application/json
Content-Length: 123

{
   "name": "John Doe",
   "email": "johndoe@example.com",
   "age": 30
}

上述代码表示向 example.com/api/user 资源发送一个 POST 请求,请求体中包含了一个 JSON 格式的用户信息。

2.2. 优缺点

POST 请求的优点包括:

  • 可以提交比 GET 更大的数据量。
  • 相对更安全,因为请求参数不会被包含在 URL 中。

POST 请求的缺点包括:

  • 对服务器性能的影响较大。
  • 不适用于对同一资源进行多次操作。

2.3. 应用场景

  • 向服务器提交表单数据。
  • 向服务器上传文件。
  • 创建资源或提交数据到服务器。

3. GET 请求

GET 请求用于向指定资源发出请求,请求中包含了资源的 URL 和请求参数。服务器端通过解析请求参数来返回相应的资源,不会修改服务器端的状态。

使用 GET 请求方式提交的数据会被包含在 URL 中,因此易于被缓存和浏览器保存,但也因此不适合用于提交敏感数据。

3.1. 例子

下面是一个 GET 请求的例子:

GET /api/user?id=123 HTTP/1.1
Host: example.com

上述代码表示向 example.com/api/user 资源发送一个 GET 请求,请求参数中包含了用户的 ID。

3.2. 优缺点

GET 请求的优点包括:

  • 可以被缓存和浏览器保存。
  • 对服务器性能的影响较小。

GET 请求的缺点包括:

  • 不适合用于提交敏感数据。
  • 仅适用于对资源进行查询操作,不能修改服务器端的状态。

3.3. 应用场景

  • 获取资源信息。
  • 对资源进行查询操作。

4. DELETE 请求

DELETE 请求用于请求服务器删除指定的资源,可以理解为对服务器上的资源进行删除操作。使用 DELETE 方式请求会导致指定的资源被永久删除,因此需要谨慎使用。

4.1. 例子

下面是一个 DELETE 请求的例子:

 
DELETE /api/user?id=123 HTTP/1.1
Host: example.com

上述代码表示向 example.com/api/user 资源发送一个 DELETE 请求,并指定要删除的用户的 ID。

4.2. 优缺点

DELETE 请求的优点包括:

  • 可以永久删除指定的资源。

DELETE 请求的缺点包括:

  • 对服务器性能的影响较大。
  • 不适用于对同一资源进行多次操作。

4.3. 应用场景

  • 删除指定的资源。
  • 按照条件删除一组资源。

5. PUT 请求

PUT 请求用于向服务器更新指定资源,可以理解为对服务器上的资源进行修改操作。使用 PUT 请求方式会覆盖原有的资源内容,因此需要谨慎使用。

5.1. 例子

下面是一个 PUT 请求的例子:

PUT /api/user HTTP/1.1
Host: example.com
Content-Type: application/json
Content-Length: 123

{
   "id": 123,
   "name": "John Doe",
   "email": "johndoe@example.com",
   "age": 30
}

上述代码表示向 example.com/api/user 资源发送一个 PUT 请求,并指定要更新的用户信息。

5.2. 优缺点

PUT 请求的优点包括:

  • 可以更新指定的资源。

PUT 请求的缺点包括:

  • 对服务器性能的影响较大。
  • 不适用于对同一资源进行多次操作。

5.3. 应用场景

  • 更新指定的资源。
  • 按照条件更新一组资源。

6. 总结

本文详细介绍了 HTTP 中常见的四种请求方式:POSTGETDELETEPUT。这四种请求方式各有优缺点,需要根据具体的应用场景选择使用。熟练掌握这些请求方式有助于我们在 Web 服务的开发中更加便捷和高效地实现各种功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1426884.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python-分享篇-Turtle海龟-画图

文章目录 背景颜色画圆太阳花树椭圆 背景颜色 import turtlepen turtle.Turtle() turtle.Screen().bgcolor("blue") pen.color("cyan") for i in range(10):for i in range(2):pen.forward(100)pen.right(60)pen.forward(100)pen.right(120)pen.right(36…

GEDepth:Ground Embedding for Monocular Depth Estimation

参考代码:gedepth 出发点与动机 相机的外参告诉了相机在世界坐标系下的位置信息,那么可以用这个外参构建一个地面基础深度作为先验,后续只需要在这个地面基础深度先验基础上添加offset就可以得到结果深度,这样可以极大简化深度估…

使用goland IDE编写go windows ui

最近突发奇想,想实现一款工作节奏的提示安排小闹钟。那首先解决的就是UI。本人擅长go语言。那go在windows ui的探索肯定有人做过了吧。一查还真有,通过知乎,csdn等查到目前支持最好的就是walk库了。那走起试试。 一、拷贝go代码 将官网例子…

玩转全新nova12系列熄屏显示,做最潮nova星人!

熄屏显示一直是大家非常喜欢的一项功能,可以让我们在不影响他人的情况下随时随时地查看消息提醒。华为nova12全系列机型均支持熄屏显示功能,且在系列上更是有重磅升级,熄屏显示不再只局限于一小块区域,整个屏幕都可以作为显示空间…

java大文件分片上传

1.效果图 2.前端html <!DOCTYPE html> <html> <head></head> <body> <form><input type"file" id"fileInput" multiple><button type"button" onclick"upload()" >大文件分片上传&l…

通俗易懂理解通道注意力机制(CAM)与空间注意力机制(SAM)

重要说明&#xff1a;本文从网上资料整理而来&#xff0c;仅记录博主学习相关知识点的过程&#xff0c;侵删。 一、参考资料 通道注意力&#xff0c;空间注意力&#xff0c;像素注意力 通道注意力机制和空间注意力机制 视觉 注意力机制——通道注意力、空间注意力、自注意力…

上位机图像处理和嵌入式模块部署(二进制图像的读写)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 之前我们说过&#xff0c;对于图像处理而言&#xff0c;势必会涉及到文件的读写。但是不同格式文件的读写&#xff0c;这本身又是体力活&#xff0…

大数据学习之Redis、从零基础到入门(三)

目录 三、redis10大数据类型 1.哪十个&#xff1f; 1.1 redis字符串&#xff08;String&#xff09; 1.2 redis列表&#xff08;List&#xff09; 1.3 redis哈希表&#xff08;Hash&#xff09; 1.4 redis集合&#xff08;Set&#xff09; 1.5 redis有序集合&#xff08…

提升CKA考试胜算:一文带你全面了解RBAC权限控制!

RBAC概述 RBAC引入了四个新的顶级资源对象。Role、ClusterRole、RoleBinding、 ClusterRoleBinding。同其他 API 资源对象一样&#xff0c;用户可以使用 kubectl 或者 API 调用等 方式操作这些资源对象。kubernetes集群相关所有的交互都通过apiserver来完成&#xff0c;对于这…

【CSS】移动端适配

移动端适配怎么做&#xff1f; 适配的目的是在屏幕大小不同的终端设备拥有统一的界面&#xff0c;让拥有更大屏幕的终端展示更多的内容。 meta viewport (视口) 移动端初始视口的大小默认是980px&#xff0c;因为世界上绝大多数PC网页的版心宽度为980px &#xff0c;如果网页…

Kudu数据库详解

文章目录 1、概要2、 Kudu产品特点&#xff1a;3 、Kudu架构4、 基础概念5、 服务端口6、 启停命令7 、kudu与impala结合8、 使用限制9、 使用kudu-client操作kudu 1、概要 Apache Kudu 是由 Cloudera开源的列式存储系统&#xff0c;可以同时提供低延迟的随机读写和高效的数据…

运行程序时出现“无效类”的解决方法

最近做开发时&#xff0c;遇到了一个奇怪的问题&#xff0c;打开的烧录软件突然出现了“无效类”的字样&#xff0c;以前打开却时正常的&#xff0c;真的是莫名其妙。 然后找了很久的解决办法&#xff0c;终于在某一天运行一个系统软件出现了同样的问题&#xff0c;有提示到WMI…

JS 异常处理

1、抛出异常 throw 1.throw抛出异常信息&#xff0c;程序也会终止执行 2.throw后面跟的是错误提示信息 3.Error对象配合 throw使用&#xff0c;能够设置更详细的错误信息 示例 function fn(x, y) {if (!x || !y) {throw new Error(没有参数传进来) }return x y } fn()打印结果…

0201-2-进程的描述与控制

第二章进程的描述与控制 前驱图和程序执行 程序并发执行 程序的并发执行 程序并发执行时的特征 间断性失去封闭性不可再现性 进程的描述 进程的定义 进程是程序的一次执行进程是一个程序及其数据在处理机上顺序执行时所发生的活动进程是具有独立功能的程序在一个数据集合…

业务流程自动化平台在制造业应用案例,助力业务自动化、智能化

捷昌驱动成立于2000年&#xff0c;并于2018年9月在上海证券交易所上市&#xff0c;是一家专注于线性驱动产品研发、生产及销售的科技集团。 公司整合全球资源&#xff0c;为智慧办公、医疗康护、智能家居、工业自动化等关联产业提供驱动及智能控制解决方案&#xff0c;以科技驱…

华为手机滚屏翻译:双指长按屏幕,快速翻译屏幕上的一屏或多屏内容,自动检测英日法韩西俄等10种语言

翻译作为沟通工具&#xff0c;能够帮助跨越各种语言的障碍&#xff0c;让人们能够与来自不同文化背景的人有效交流。翻译也是文化传播的重要途径&#xff0c;它允许不同语言和文化的故事、思想、知识和艺术形式被广泛传播&#xff0c;增进了人们对异域文化的理解和尊重。 在手机…

「C/C++」常见注释格式

✨博客主页何曾参静谧的博客📌文章专栏「C/C++」C/C++程序设计📚全部专栏「VS」Visual Studio「C/C++」C/C++程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasolid函数说明

使用 PyTorch 构建 NLP 聊天机器人

一、说明 聊天机器人提供自动对话&#xff0c;可以帮助用户完成任务或寻求信息。随着深度学习的最新进展&#xff0c;聊天机器人正变得越来越具有对话性和实用性。这个全面的教程将利用 PyTorch 和 Python 从头开始构建聊天机器人&#xff0c;涵盖模型架构、数据准备、训练循环…

妤带皇冠必承其重:刘芊妤从模特到演员的蜕变

刘芊妤自2015年至2017年参加了十几场国内外的知名模特大赛&#xff0c;选美大赛&#xff0c;多次荣获冠军&#xff0c;十佳以及单项奖&#xff0c;2017年赴台湾和埃及&#xff0c;赴土耳其参加国际赛事&#xff0c;荣获奖项, 为国争光&#xff0c;她聪明睿智&#xff0c;乘风破…

基于Java SSM框架实现智能快递分拣系统项目【项目源码】计算机毕业设计

基于java的SSM框架实现智能快递分拣系统演示 JAVA简介 Java主要采用CORBA技术和安全模型&#xff0c;可以在互联网应用的数据保护。它还提供了对EJB&#xff08;Enterprise JavaBeans&#xff09;的全面支持&#xff0c;java servlet API&#xff0c;JSP&#xff08;java serv…