关于post请求的三种参数【params,data,json】

基础不牢,地动山摇~
处理海外某网站发帖接口时候,接口参数都逆完了,最后用aiohttp 发送post请求,发现结果怎么都不对。最后一看 post 参数传入姿势不对。于是乎,仔细研究了一下。
当使用 aiohttp 发送 POST 请求时,存在三种不同的参数:params、data 和 json。它们在如何发送数据以及发送什么类型的数据上有不同的用途。以下是它们的区别:

params参数:

  • params 参数通常用于发送 URL 查询参数。
  • 这些参数会附加到请求的 URL 中,并以 key=value 的形式出现,用 & 符号分隔多个参数。就拼接在url 问号?后面的东西。
    示例:
import aiohttp

async with aiohttp.ClientSession() as session:
    params = {'wd': 'xxx'}
    async with session.get('https://www.baidu.com/s', params=params) as response:
        ...
# 也可以写成
url = 'https://www.baidu.com/s?wd=xxx'
async with aiohttp.ClientSession() as session:
    async with session.get(url, params=params) as response:


data参数:

data 参数通常用于发送表单数据,如提交 HTML 表单时。

  • 数据将以表单形式编码,并发送到服务器。
  • 可以发送键值对、文件上传等数据。
  • 通常发送的数据是字典或类似的数据结构。
  • 在header中’Content-Type’ 字段’application/x-www-form-urlencoded’

示例:

import aiohttp

async with aiohttp.ClientSession() as session:
    data = {'field1': 'xxx', 'field2': 'xxxx'}
    async with session.post('https://xxx.com/submit', data=data) as response:
        ...

json参数:

json 参数用于发送 JSON 格式的数据,通常用于 RESTful API 请求。

  • 数据将以 JSON 格式编码,header中Content-Type 头部为 application/json。
  • 通常发送的数据是 Python 字典,然后在发送时自动序列化为 JSON。
    示例:
import aiohttp

async with aiohttp.ClientSession() as session:
    json_data = {'key1': 'xxx', 'key2': 'xxxx'}
    async with session.post('https://xxx.com/api', json=json_data) as response:
        ...

总结一句话:

  • url链接能看到用params。
  • Content-Type 为 application/x-www-form-urlencoded 用data。
  • Content-Type 为 application/json,用json。
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值