关于post和get的请求参数问题

今天在和泓宇交流的时候,谈到了关于postman测试接口的问题。我昨天在postman测试的时候,对于条件查询不知道怎么测试,脑子里很混乱。今天,泓宇借着条件查询这个机会给我讲了讲get和post的请求参数的知识,趁着现在有记忆,我就先把这些知识记录下来。

我最混乱的其实就是请求参数。对于get,请求参数应该放在这里:

对于get而言,请求参数是可以直接放到URL里的,你会发现你在Params写了请求参数之后,这些参数会自动拼接在URL后面。

之后,这个路径访问到对应的后端接口,然后把参数传递到这里:

而对于post就有所不同了。post一般用Body来传递参数给后端,其实也可以用Params,但是一般不用。我待会再来说说为什么不用。OK,现在我们知道post一般依赖于Body来传递参数给后端,而Body又有两种传递方式,一种是raw,一种是form-data。

其实用这两种中的任意一种都行,只不过用raw的话会快一点,因为我这些参数一般都是用AI辅助我写嘛,AI的话相对来讲会快一点,用form-data的话你要一个一个参数的创建,太慢了,用不了AI了。

看上图,可以知道当Body过来的时候,通过这个@RequestBody将请求的参数映射到Form中。

以上就是用post请求参数的两种方式,其实按道理来讲也可以用Params,但是因为URL的长度是有限的,所以用Params的话,当你携带的参数很多很多的时候,URL限制长度,所以会把你的一些键值对给截断了。所以一般使用post的时候我们不用Params。

### Axios 中 GET POST 请求参数传递方式 #### GET 请求参数传递 对于 `GET` 请求参数通常通过 URL 查询字符串的方式附加到请求地址后面。可以利用对象的形式定义这些查询参数,在发起请求时作为配置项的一部分传入。 ```javascript // 发送带有查询参数GET 请求 axios.get('/api/data', { params: { key1: 'value1', key2: 'value2' } }) .then(function (response) { console.log(response.data); }) .catch(function (error) { console.error(error); }); ``` 这种方式下,实际发出的 HTTP 请求会像这样:`/api/data?key1=value1&key2=value2`[^1]。 #### POST 请求参数传递 当涉及到 `POST` 请求时,情况稍微复杂一些,因为这取决于服务器端期望接收的数据格式以及 Content-Type 的设定。如果目标是提交表单编码形式的数据,则应按照如下所示设置: ```javascript // 设置默认的全局头部信息 axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; // 提交表单数据类型的 POST 请求 axios.post('/api/formSubmit', new URLSearchParams({ param1: 'hello', param2: 'world' })) .then(function (response) { console.log(response.data); }) .catch(function (error) { console.error(error); }); ``` 而对于 JSON 数据来说,只需简单地将 JavaScript 对象直接放入第二个参数位置即可,默认情况下 Axios 已经知道如何将其序列化为合适的 payload 并适当调整 Content-Type 头部为 application/json[^4]。 需要注意的是,`GET` 请求中的参数会在浏览器地址栏显示出来,而 `POST` 请求则不会;这意味着敏感信息更适合放在后者之中[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值