GET和POST的具体传参方式以及结构!!!(代码详解)

本文深入解析GET和POST请求方式的优缺点,详细说明了两者的请求过程,探讨了GET相较于POST的优势,特别是在缓存和CDN利用方面的优势。同时,介绍了如何在Vue中使用Axios进行GET和POST传参。

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

  • 一、GET 和 POST 传参方式的优缺点
    • 1.post更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中)
    • 2.post发送的数据量更大(get有url长度限制)
    • 3.post能发送更多的数据类型(get只能发送ASCII字符)
    • 4.post比get慢
    • 5.Post是向服务器提交数据的一种请求,get是向服务器发索取数据的一种请求。
    • 6.get会将数据缓存起来,而post不会
    • 7.post请求包含更多的请求头
    • 8.post在真正接受数据之前会先将请求头发送给服务器进行确认,然后才真正发送数据
  • 二、GET 和 POST 传参方式的请求过程
    • post请求的过程:
      • 1.浏览器请求tcp连接(第一次握手)
      • 2.服务器答应进行tcp连接(第二次握手)
      • 3.浏览器确认,并发送post请求头(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
      • 4.服务器返回100 continue响应
      • 5.浏览器开始发送数据
      • 6.服务器返回200 ok响应
    • get请求的过程
      • 1.浏览器请求tcp连接(第一次握手)
      • 2.服务器答应进行tcp连接(第二次握手)
      • 3.浏览器确认,并发送get请求头和数据(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
      • 4.服务器返回200 ok响应。
  • 三、相对来说 GET 对比 POST 的优势是什么?
    • GET 的URL可以手动输入啊,你在地址栏打个POST看看。本质上面, GET 的所有信息都在URL, 所以很方便的记录下来重复使用。如果你期望你复制的url资源可以更好的分享给别人看,那就用GET方法吧~POST方法做不到哦~
    • 然而从深层次上分析:虽然这两者都是明文传送。但它们表达的语义不一样,这决定了主干网络可以对其做不同的处理。
      • get表达的是一种幂等的,只读的,纯粹的操作,即它除了返回结果不应该会产生其它副作用(如写数据库),因此绝大部分get请求(通常超过90%)都直接被CDN缓存了,这能大大减少web服务器的负担。
      • 而post所表达的语义是非幂等的,有副作用的操作,所以必须交由web服务器处理。
      • 因此若是把所有get请求换成post,意味着主干网络上的所有CDN都废掉了,web服务器要处理的请求数量将成百上千倍地增加,显然这不是一个聪明的做法!
  • 四、VUE之使用 AXIOS 进行GET 和 POST 进行传参
    • 1.axios的定义
      • 基于Promise的HTTP客户端,用于浏览器和node.js。
    • 2.axios的特征
      • 1.做的XMLHttpRequest从浏览器
      • 2.让HTTP从node.js的请求
      • 3.支持Promise API
      • 4.拦截请求和响应
      • 5.转换请求和响应数据
      • 6.取消请求
      • 7.自动转换JSON数据
      • 8.客户端支持防范XSRF
    • 3.axios的安装
      • 三种方式,均可进行
      • $  npm install axios   // 使用npm
        $  bower install axios   // 使用bower
        <script src="https://unpkg.com/axios/dist/axios.min.js"></script>   // 通过cdn直接调用
        
    • 4.axios的使用
      • 添加引用
      • import axios from 'axios';
        
    • 5.aixos之 get传参方式模板
      • 此次get传参中的url需要进行字符串拼接
      • var id = 001;
        var url =  'http://192.168.**.***:8080/Card';
        url += 	`?cardId=${id}`;   // 拼接字符串
        axios.get(url).then(function(response) {
          if (response.data == false) {
          	this.$Message.success("注册成功");
          } else {
          	this.$Message.info("注册失败");
          }
        });
        
    • 6.aixos之 post传参方式实例
      • var url =  ''http://192.168.**.***:8080/Card'; 
        axios.post('url', {
          数据库字段1: 'value',
          数据库字段2: 'value'
        }
        )
        .then(function (response) {
         //具体操作
          console.log(response);
        })
        .catch(function (error) {
          console.log(error);
        });
        
<think>首先,用户的问题是:“我想了解在使用fetch进行GET请求时通常在哪里传递参数 请问fetch GET请求传参位置”。这是一个关于前端开发的问题,具体是关于如何使用fetch API进行GET请求时传递参数。 我需要参考系统提供的引用内容。引用[1]提到了fetch的基本用法,但没有具体GET请求的参数位置。引用[2][3]讨论了HTTP方法如GETPOST等,但主要针对资源操作,没有直接说fetch的参数传递。引用[4]是关于Flask后端的位置参数。引用[5]是关于URL带参数的例子。 从这些引用中,我可以提取相关信息: - 引用[1]:提到了fetch的基本用法,如`fetch("请求路径").then(...)`,但没有具体说参数如何添加。 - 引用[2]:解释了GET请求用于从服务器取出资源。 - 引用[5]:展示了URL带参数的例子,如`http://example.com?page=1&searchid=1&...`,这暗示了GET请求的参数通常附加在URL的查询字符串中。 所以,对于GET请求,参数通常是通过URL的查询字符串传递的。在fetch中,这意味着你需要构建一个包含查询参数的URL。 现在,构建我的回答: 1. **结构清晰**:我需要逐步解释。先介绍GET请求参数的位置,然后给出在fetch中的具体实现。 2. **使用中文**:用户指定了使用中文回答。 3. **LaTeX语法**:如果有数学表达式,要用$...$或$$...$$,但这个问题可能不涉及数学,所以可能不需要。如果有变量等,确保正确格式。 4. **生成相关问题**:在回答末尾,添加相关问题,如示例所示。 5. **引用标识**:如果引用站内内容,在末尾添加引用标识,如[^1]。 关键点: - GET请求的参数通常附加在URL的后面,使用`?`开始,参数以`key=value`形式,多个参数用`&`分隔,例如:`http://example.com/api?param1=value1&param2=value2`。 - 在fetch中,你需要将完整的URL作为第一个参数传递给fetch函数。 例如: ```javascript fetch('https://api.example.com/data?key1=value1&key2=value2') .then(response => response.json()) .then(data => console.log(data)); ``` 或者,你可以使用URLSearchParams对象来构建查询字符串。 从引用[5],有例子:`http://stuq.ceshiren.com:8089/swagger-ui.html#/?page=1&searchid=1...`,这支持了URL查询参数的方式。 引用[1]中,fetch用法是`fetch("请求路径")`,所以"请求路径"应该包括参数。 所以,回答应该包括: - 解释GET参数位置:在URL查询字符串中。 - 给出fetch中的代码示例。 - 可能提到如何动态构建URL。 最后,生成相关问题。 完整回答结构: 1. 简要介绍GET请求参数的位置。 2. 详细说明在fetch中如何实现。 3. 提供代码示例。 4. 添加相关问题。 确保引用:如果直接引用站内内容,如引用[5]的例子,在末尾添加引用标识。但用户说“上述引用仅供参考”,所以我应该基于知识回答,但自然地添加引用。 例如,在提到URL格式时,可以引用引用[5]。 引用[5]说:“url带参数...例: http://...?page=1&searchid=1...”,所以我可以引用它。 同样,引用[1]提到fetch基本用法。 所以,在回答中: - 当解释URL格式时,引用[5]。 - 当提到fetch时,引用[1]。 回答大纲: - 开头:GET请求的参数通常附加在URL的查询字符串部分,以`?`开始,参数键值对用`&`连接[^5]。 - 在fetch中,你需要构建包含查询参数的完整URL,然后传递给fetch函数[^1]。 - 代码示例:展示如何构建URL使用fetch。 - 可能解释URLSearchParams的使用。 - 结尾:相关问题。</think>### Fetch GET 请求传参位置详解 在使用 Fetch API 进行 GET 请求时,参数通常通过 **URL 的查询字符串(Query String)** 传递。以下是详细说明实现步骤: #### 1. **GET 请求参数的位置** - GET 请求的参数必须附加在 URL 末尾,以 `?` 符号开头。 - 参数格式为 `key=value`,多个参数用 `&` 连接。 - 例如: `https://api.example.com/data?param1=value1&param2=value2` 其中 `param1` `param2` 是参数名,`value1` `value2` 是对应值[^5]。 - 这种格式符合 HTTP 规范,GET 请求本身不包含请求体(Body),所有数据都通过 URL 传输[^2]。 #### 2. **在 Fetch 中实现 GET 传参** 在 JavaScript 中,使用 Fetch API 时,你需要手动构建完整的 URL(包括查询参数)。以下是两种常见方法: **方法 1:直接拼接 URL 字符串** 适用于简单参数,直接拼接字符串形成 URL。 ```javascript const baseUrl = 'https://api.example.com/data'; const params = '?page=1&search=周杰伦'; // 查询字符串 const url = baseUrl + params; fetch(url) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error('Error:', error)); ``` **方法 2:使用 URLSearchParams 对象** 推荐动态生成参数时使用,避免手动转义特殊字符。 ```javascript const baseUrl = 'https://api.example.com/data'; const params = new URLSearchParams({ page: 1, search: '周杰伦', type: 'song' }); const url = `${baseUrl}?${params.toString()}`; // 构建完整 URL fetch(url) .then(response => response.json()) .then(data => console.log(data)); ``` - **为什么这样设计?** Fetch API 的设计遵循 HTTP 标准,GET 请求的参数必须通过 URL 传递,而 Fetch 的第一个参数就是 URL 字符串[^1]。这与 POST/PUT 请求不同(参数可通过 Body 发送)。 #### 3. **注意事项** - **URL 编码**:如果参数值包含特殊字符(如空格、中文),需用 `encodeURIComponent` 处理,或依赖 `URLSearchParams` 自动编码。 - **安全性**:避免在 URL 中传递敏感信息(如密码),因为 URL 可能被浏览器历史记录或日志记录。 - **后端接收**:后端框架(如 Flask)通过请求对象解析查询字符串,例如 Flask 的 `request.args.get('param1')`[^4]。 #### 示例场景 假设请求用户数据,参数为 `userId=123` `role=admin`: ```javascript const url = 'https://api.example.com/users?userId=123&role=admin'; fetch(url) .then(response => response.json()) .then(data => console.log(data)); ``` 此代码会发送 GET 请求到 `https://api.example.com/users?userId=123&role=admin`,后端可通过查询字符串提取参数[^4]。 通过以上方式,你可以在 Fetch GET 请求中高效传递参数。如需其他方法(如 POST 传参),可参考相关问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值