HTTP请求-请求行

请求行(方法,URL,版本号)

方法:

描述了这次请求的目的。

常见方法:

GET:从服务器拿一个东西过来(读操作)

POST:往服务器放一个东西去(写操作)

两个典型的使用POST的场景:1.登录        2.上传

从使用习惯上,GET通常没有body,POST通常有body,

GET会把需要给服务器补充的信息放到query string中(url)

POST会把这些信息放到body中,body中可以放任意格式的数据,前后端约定好即可(json是非常常用的格式)

GET与POST的区别

首先,GET与POST本质上没有区别。

        使用POST的场景可以替换成GET,反之亦然 => 取决于代码的写法,尤其是服务器和客户端都是自己实现的场景。但是部分浏览器/服务器某些情况下GET和POST不能完美替换,大部分情况下相互替换问题不大。

        但是GET和POST在使用情况下还是有区别的:

1.GET习惯于把数据放在url的query string中,POST习惯于放在body中。

GET可以把数据放在body中 => 有的浏览器/服务器不支持。

POST也可放在query string中 => 对于绝大多数浏览器/服务器都适用。

2.语义上的区别,标准文档中,GET的语义用来获取数据,POST的语义是用来提交数据。

实际应用中并不一定按照上述要求。

3.关于幂等性,标准文档中,建议GET请求实现成幂等的,POST则无要求。

每次输入的内容一定,输出的结果也一定,称为幂等。

每次输入的内容一定,输出的结果不一定,不是幂等。

如果一个操作本身是幂等的,此时就可以进行缓存了

4.GET请求可以被浏览器收藏,POST不可以。

其他方法:

1.PUT与POST相似,只是具有幂等性,一般用于更新。

2.DELETE删除服务器指定资源

3.OPTIONS返回服务器所支持的请求方法。

4.HEAD类似于GET,只不过响应体不返回,只返回响应头。

5.TRACE回显服务器收到的请求,测试的时候会用到。

6.CONNECT预留,暂无使用。

URL

用于描述一个网络上的资源位置。

一个完整的URL结构:

协议方案名+登录信息(认证)+服务器地址+服务器端口+带有层次的文件地址+查询字符串+片段标识符

登录信息(认证):写在这里不太安全,现在都是通过单独的登录页面来完成身份验证的。

服务器地址+服务器端口:这里的域名也可以是ip地址,后面带有端口号,浏览器就会自动给一个默认的端口。http:80;   https:443.

带有层次的文件地址:这里可能会对应一个真实的硬盘文件,也可能对应一个虚拟的文件。

网络上的资源位置:1)通过ip地址知道服务器在哪       

                                 2)通过端口号知道程序是哪个       

                                 3)通过路径知道是访问哪个资源

查询字符串:是客户端给服务器传递信息的重要途径,按照键值对的方式来组织的。针对请求的内容做的补充说明。

片段标识符:用来标识当前页面的某个部分,通过不同的片段标识可以完成网页内跳转。

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

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

相关文章

OSPF不规则区域和LSA

OSPF不规则区域 1.远离骨干的非骨干区域 R1-R4四台路由器能够正常学习到彼此路由,但是R5不行,因为R5是非法ABR 解决方法: 1使用Tunnel隧道将AR4连接到骨干区域 (1) 使用隧道解决不规则区域的问题 a.可能造成选路不…

【VS Code】开发C++跳转配置

C配置c_cpp_properties.json {"env": {"myIncludePath": ["${workspaceFolder}/src/include","${workspaceFolder}/src","${workspaceFolder}","/home/xxx/include/"],"myDefines": ["RELEASE&qu…

Spring AI应用:利用DeepSeek+嵌入模型+Milvus向量数据库实现检索增强生成--RAG应用(超详细)

Spring AI应用:利用DeepSeek嵌入模型Milvus向量数据库实现检索增强生成–RAG应用(超详细) 在当今数字化时代,人工智能(AI)技术的快速发展为各行业带来了前所未有的机遇。其中,检索增强生成&…

Spring 的 IoC 和 DI 详解:从零开始理解与实践

Spring 的 IoC和 DI 详解:从零开始理解与实践 一、IoC(控制反转) 1、什么是 IoC? IoC 是一种设计思想,它的核心是将对象的创建和管理权从开发者手中转移到外部容器(如 Spring 容器)。通过这种…

JVM基础架构:内存模型×Class文件结构×核心原理剖析

🚀前言 “为什么你的Java程序总在半夜OOM崩溃?为什么某些代码性能突然下降?一切问题的答案都在JVM里! 作为Java开发者,如果你: 对OutOfMemoryError束手无策看不懂GC日志里的神秘数字好奇.class文件如何变…

.DS_Store文件泄露、.git目录泄露、.svn目录泄露漏洞利用工具

🐉工具介绍 一款图形化的 .DS_Store文件泄露、.git目录泄露、.svn目录泄露漏洞利用工具。 🎯使用 本工具使用Python3 PyQt5开发,在开始使用前,请确保已经安装了相关模块: pip3 install -r requirements.txt -i ht…

为何在 FastAPI 中需要允许跨域访问(CORS)?(Grok3 回答)

prompt: 你是一个文笔流畅、专业性极强的技术博客博主,你将结合具体的例子和实际代码解释写一篇为何后端选择fastapi框架时,需要允许跨域访问。 为何在 FastAPI 中需要允许跨域访问(CORS)? 在现代 Web 开发中&#xf…

JDK8前后日期(计算两个日期时间差-高考倒计时)

JDK8之前日期、时间 Date SimpleDateFormat Calender JDK8开始日期、时间 LocalDate/LocalTime/LocalDateTime ZoneId/ZoneDateTIme Instant-时间毫秒值 DateTimeFormatter Duration/Period

Gerapy二次开发:用户管理专栏主页面开发

用户管理专栏主页面开发 写在前面用户权限控制用户列表接口设计主页面开发前端account/Index.vuelangs/zh.jsstore.js后端Paginator概述基本用法代码示例属性与方法urls.pyviews.py运行效果总结欢迎加入Gerapy二次开发教程专栏! 本专栏专为新手开发者精心策划了一系列内容,旨…

关于Spring MVC中传递数组参数的详细说明,包括如何通过逗号分隔的字符串自动转换为数组,以及具体的代码示例和总结表格

以下是关于Spring MVC中传递数组参数的详细说明,包括如何通过逗号分隔的字符串自动转换为数组,以及具体的代码示例和总结表格: 1. 核心机制 Spring MVC支持直接通过逗号分隔的字符串将请求参数自动转换为数组(String[]、int[]等&…

大模型学习七:‌小米8闲置,直接安装ubuntu,并安装VNC远程连接手机,使劲造

一、说明 对于咱们技术人来说,就没有闲的蛋疼的时候,那不是现在机会来了 二、刷机器准备 1、申请解锁手机 申请解锁小米手机https://www.miui.com/unlock/download.html 下载工具,安装下面的步骤来,官网不欺人吧 打开开发者工…

repo安装配置

1.安装属性 以下配置方式二选一进行安装 1.1全局级别配置 1. 安装 repo 工具 在终端中输入以下命令以下载 repo 工具: curl https://storage.googleapis.com/git-repo-downloads/repo > /usr/bin/repo chmod ax /usr/bin/repo 1.2用户级别配置 1. 安装 r…

Go 语言数据类型

Go 语言数据类型 概述 Go 语言(也称为 Golang)是一种静态强类型、编译型、并发型、具有垃圾回收功能的编程语言。自2009年发布以来,Go 语言因其简洁的语法、高效的执行速度和强大的并发处理能力而广受欢迎。本文将详细介绍 Go 语言中的数据类型,帮助读者更好地理解和掌握…

C# 看门狗策略实现

using System; using System.Threading;public class Watchdog {private Timer _timer;private volatile bool _isTaskAlive;private readonly object _lock new object();private const int CheckInterval 5000; // 5秒检测一次private const int TimeoutThreshold 10000; …

Font Awesome Web 应用图标

1. 什么是 Font Awesome Web 应用图标 Font Awesome Web 应用图标是 Font Awesome 图标库中与 Web 开发相关的子集,适用于界面设计、用户交互和功能标识。 定义与作用 定义:这些图标包括导航(如“主页”)、操作(如“…

如何实现H5端对接钉钉登录并优雅扩展其他平台

如何实现H5端对接钉钉登录并优雅扩展其他平台 钉钉H5登录逻辑后端代码如何实现?本次采用策略模式工厂方式进行定义接口确定会使用的基本鉴权步骤具体逻辑类进行实现采用注册表模式(Registry Pattern)抽象工厂进行基本逻辑定义具体工厂进行对接…

STM32F103C8T6单片机开发:简单说说单片机的外部GPIO中断(标准库)

目录 前言 如何使用STM32F1系列的标准库完成外部中断的抽象 初始化我们的GPIO为输入的一个模式 初识GPIO复用,开启GPIO的复用功能时钟 GPIO_EXTILineConfig和EXTI_Init配置外部中断参数 插入一个小知识——如何正确的配置结构体? 初始化中断&#…

【自然语言处理】深度学习中文本分类实现

文本分类是NLP中最基础也是应用最广泛的任务之一,从无用的邮件过滤到情感分析,从新闻分类到智能客服,都离不开高效准确的文本分类技术。本文将带您全面了解文本分类的技术演进,从传统机器学习到深度学习,手把手实现一套…

Java Lambda与方法引用:函数式编程的颠覆性实践

在Java 8引入Lambda表达式和方法引用后,函数式编程范式彻底改变了Java开发者的编码习惯。本文将通过实战案例和深度性能分析,揭示如何在新项目中优雅运用这些特性,同时提供传统代码与函数式代码的对比优化方案。 文章目录 一、Lambda表达式&a…

剑指offer经典题目(三)

目录 动态规划入门 二进制运算 链表相关 动态规划入门 题目1:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算 不同的结果)。OJ地址 简单图示如下。 题目分析&#…