request.post,json和data

参考

https://zhuanlan.zhihu.com/p/140372568
https://zhuanlan.zhihu.com/p/140372568

介绍

这两条请求语句使用了不同的参数传递方式,有以下区别:

1. `requests.post(url='http://xx.8.84.xx:8000/inference', json=data)`
   这个语句使用了 `json` 参数,它会自动将提供的 Python 对象(在这里是 `data`)转换为 JSON 格式,并把它作为请求的主体内容发送给服务器。这通常用于向服务器发送 JSON 数据。
   
2. `requests.post(url='http://xx.8.84xx:8000/inference', data=data)`
   这个语句使用了 `data` 参数,它会将提供的字符串(在这里是 `data`)直接作为请求的主体内容发送给服务器。这通常用于向服务器发送表单数据。

所以,两者的区别在于参数的类型和处理方式。如果你的服务器端期望 JSON 格式的数据,你应该使用第一种方式;如果服务器端期望表单数据,则可以使用第二种方式。


1. 使用data作为主体参数

当request的请求头的数据格式为Content-Type=application/json,表明需要传入的data参数的格式应为json。json是一种文本序列化格式,可以使用json.dumps()方法将字典转成json格式:

data = {
        "layer_tag":"im_index",
        "is_not_need_expt_ver":False,
        "is_not_need_submit":False,
        "user_list":[
            {
                "client_type":0,
                "client_id":"123456"
            }
                    ]
        }
 
import json
data_json=json.dumps(data)
print(type(data_json))
data_json


可以看到json输出的格式是‘str',当data为str时,如果不指定content-type,默认为text/plain。

2. 使用json作为主体参数

此时可直接使用字典格式:

import requests
url = 'http://这里填入地址'
headers={'Content-Type':"application/json"}
 
# 提交请求
# 方法一:使用data参数
r = requests.post(url, headers=headers, data = data_json)
 
# 方法二:使用json参数
r = requests.post(url, headers=headers, json = data)
不管json是str还是dict,如果不指定headers中的content-type,默认为application/json。

表单

浏览器原生的 form 表单是指在 HTML 中使用 标签创建的表单。这种表单是浏览器内置的表单功能,它提供了一种方便的方式来收集用户输入数据并将其提交到服务器进行处理。

使用原生的 form 表单,你可以定义各种表单字段,如文本输入框、复选框、单选按钮、下拉列表等。通过设置表单的属性,你可以指定表单提交的目标 URL、请求方法(GET 或 POST)以及其他处理行为。

当用户在浏览器中填写表单并提交时,浏览器会自动将表单字段的值打包成一个 HTTP 请求,并将其发送到指定的服务器端 URL。服务器端可以通过相应的技术(如后端编程语言)从请求中提取表单数据并进行相应的处理。

使用原生的 form 表单可以使表单的创建和处理更加简单和直观,同时也可以获得浏览器内建的验证和用户体验功能(如自动填充、表单校验等)。

你可能感兴趣的:(笔记,术语,python,json,windows)