2024.1.9笔记

本文详细介绍了HTTP协议中的9种请求方法(GET、POST、HEAD等)以及它们的用途和区别,同时探讨了不同类型请求参数(QueryStringParameters、FormData、RequestPayload)的传递方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.HTTP协议 9 种请求方式用途及区别

根据 HTTP 标准,HTTP 请求可以使用多种请求方法。在HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD 。然后在HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 。

(1) GET(获取):
        就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。GET请求中,永远不会包含呈现数据。 即GET请求只用来向服务器获取资源,而GET请求本身不应该携带任何呈现数据。

(2)HEAD(获取):

        HEAD方法与GET方法相同,但没有响应体,仅传输状态行和标题部分。

(3) POST(传输):

        向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在POST请求体中,这个请求可能会创建新的资源或修改现有资源,或二者皆有。

(4) PUT(传输):

        向指定资源位置上传其最新内容。用于提交数据,通常用于创建新资源。跟POST方法很像,也是向服务器提交数据,但PUT指定了资源在服务器上的位置,而POST没有。

(5)DELETE(删除):
          请求服务器删除指定的资源。

(6)OPTIONS(获取):

        向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作。用于获取当前URL所支持的方法。如果请求成功,会有一个Allow的头包含类似“GET,POST”这样的信息

(7)TRACE(追踪路径):
           回显服务器收到的请求,客户端可以对请求消息的传输路径进行追踪,TRACE方法是让Web服务器端将之前的请求通信还给客户端的方法。主要用于测试或诊断。

(8)PATCH(局部更新文件):

        该方法是对 PUT 方法的补充,用来对已知资源进行局部更新 。

(9)CONNECT(要求用隧道协议连接代理):
  CONNECT方法要求在与代理服务器通信时建立隧道,实现用隧道协议进行TCP通信。主要使用SSL(安全套接层)和TLS(传输层安全)协议把通信内容加密后经网络隧道传输。

2.HTTP请求参数三种类型

        http请求参数有三种Query String Parameters、Form Data、Request Payload,HTTP请求中不同的请求方式和设置不同的Content-Type时,参数传递的方式会不一样.

GET请求

Query String Parameters

GET请求时,参数会以url string 的形式进行传递,即?后的字符串则为其请求参数,并以&作为分隔符。

General
Request URL: http://test.com?from_type=省&from_name='山东省'
Request Method: GET
Post请求

post请求会出现两种形式的请求体:

FormData

当发起一次Post请求,若未指定Content-type,则默认content-type为application/x-www-form-urlencoded,即参数会以FormData的形式进行传递,不会显示出现在请求URL中。

Request Payload

当发起一次post请求,若Content-Type为application/json,则参数会以Request Payload的形式进行传递(数据格式为json),不会显示出现在请求url中。

formData()方法

        当我们遇到一些文件上传功能时,我们需要使用原生的formData()来进行数据组装,且content-type需要设置为multipart/formdata http请求头:

Request URL: http://test.com/upload
Request Method: POST

其中,WebKitFormBoundarysBkB6WoEBvbCRkmh为浏览器随机生成的boundary,作为分隔参数,作用等同于&。

HTTP POST 表单请求提交时,使用的Content-Type是application/x-www-form-urlencoded,而使用原生AJAX的POST请求如果不指定请求头RequestHeader,默认使用的Content-Type是text/plain;charset=UTF-8。

所以,在使用原生AJAX POST请求时,需要明确设置Request Header,即:

xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值