持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第11天
作者按:在用python编写一些脚本的过程中,免不了调用网页接口,用来测试或者下载一些信息,那么怎么发送post请求呢,今天就来研究一下。
1、post与get
这个post和get是http超文本传输协议中两种最常用的方法。如果从本质来说并没有什么区别,目的都是为了请求获得信息,都是同一个传输层协议,只有传输报文的格式不一致。格式上最大不一致就是,get方法参数都放在url里,大家都可以看到,但是post的参数都是放在请求体body中,比较隐蔽,说是比较安全,其实从传输角度来说是因为在http网络上明文传输,都是不安全的,所以想安全只有加密,就是https。还有一个就是数据长度的限制,url是最大2048个字符,post方法没有限制,可以是字符也可以是二进制数据。当然http协议本身是没有对url和body有长度 限制,一般是服务器和浏览器限制,因为处理长的字符会消耗更多资源,为了性能和安全会给长度限制。(一般约定,参数写在?或者&分割,自己也可约定写法,服务端能回应就可以)
2、requests模块
request模块是python内置的模块,主要用来发送http请求,requests模块比urllib更加简洁,导入模块包,每次requests请求之后,会返回一个reponse对象,对象里包含了具体的响应信息,这些信息工具业务不同返回信息不同
import request
发送get 请求 r = requests.get(‘https ://www.runoob.com/’)
发送post请求 r = requests.post('www.runoob.com/try/ajax/de…')
3、Cotent-Type
在发送post请求是,需要关注http请求的头部信息,尤其是conten-type字面意思九十请求内容的数据类型,常见的有哪些类型呢:
(1)application/x-www-form-urlencoded
这个是常见的键值对类型,也就是页面表单数据。
(2)application/json
请求的数据类型是json格式数据
(3)multipart/form-data
一般用于上传文件
(4)application/xml
请求数据格式为xml
4、python post请求
一个http请求中,需要包括请求行、请求报头、消息主体
requests默认使用form表单形式发送数据
inport requests #引入requests
url = ‘url’ 请求地址
data = {
‘id’ :’123’
‘name’:’cillian’
} #请求内容数据
r = request.post(url,data = data)
print(r.json()) 查看响应结果,入参是json
如果是json格式的话,就要在添加headers
headers = {'content-type': 'application/json'}
或者直接使用json参数
r = requests.post(url, json=data)
添加cookie
cookie = {‘cillian’ : ‘123’}
r = requests.post(url,data,cookies=cookie)
好了,到这里对于python接口请求post方法有一个基本了解了,快去实践,祝学习顺利!