最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

python笔记8:requests模块

来源:动视网 责编:小采 时间:2020-11-27 14:13:55
文档

python笔记8:requests模块

python笔记8:requests模块:简介: requests是python的一个http客户端库,跟urlib、urlib2类似,requests模块是基于urlib模块开发的,代码实现更为简洁。 模块安装: pip install requests ,使用requests模块时直接import requests即可。 简单使用requests:
推荐度:
导读python笔记8:requests模块:简介: requests是python的一个http客户端库,跟urlib、urlib2类似,requests模块是基于urlib模块开发的,代码实现更为简洁。 模块安装: pip install requests ,使用requests模块时直接import requests即可。 简单使用requests:


简介:

requests是python的一个http客户端库,跟urlib、urlib2类似,requests模块是基于urlib模块开发的,代码实现更为简洁。

模块安装:

pip install requests ,使用requests模块时直接import requests即可。

简单使用requests:

http协议的接口,请求方式分为get和post,这2种最为常用。请求参数常用的形式有key-value、json、文件上传、接口添加cookies、headers等操作。

get请求-url拼接参数:

import requests
url = 'http://127.0.0.1:5000/gettest?username=abc'
#返回结果类型是字符串:{"msg": "pass"}
res = requests.get(url).text

也可以使用.json(),返回结果类型是字典 (注:接口请求的返回值类型 与接口的返回定义类型有关)

#返回结果类型是字典:{'msg': 'pass'}
res_dic = requests.get(url).json()

get请求- 请求参数类型是key-value形式:

import requests
url = 'http://127.0.0.1:5000/gettest'
#请传参类型是 name=xxx&pwd=123456
data = {"username": "abc"}
#返回结果类型是str:{"msg": "pass"}
res = requests.get(url, data).text

也可以使用.json(),返回结果类型是字典?(注:接口请求的返回值类型 与接口的返回定义类型有关)

#返回结果类型是字典:{"msg": "pass"}
res_dic = requests.get(url, data).json()
get请求调用的接口实现如下:
 1 import flask
 2 from flask import request
 3 from flask import jsonify
 4 
 5 server = flask.Flask(__name__)
 6 @server.route('/gettest', methods=['get'])
 7 def test1():
 8 name = request.values.get('username')
 9 if name == 'abc':
10 #接口返回值类型为字典
11 res = {"msg": "pass"}
12 return jsonify(res)
13 else:
14 res = {'msg': "fail"}
15 return jsonify(res)
16 server.run(debug=True)
View Code

post请求 - url拼接参数

import requests
import json
url = 'http://127.0.0.1:5000/gettest?username=abc'
#返回结果类型是str:{"msg": "pass"}
res = requests.post(url).text
#可以通过json.loads将字符串(json串)转换为字典类型,方便取值操作
res_dic = json.loads(res)

也可以使用.json(),返回结果类型是字典?(注:接口请求的返回值类型 与接口的返回定义类型有关)

#返回结果类型为字典:{'msg': 'pass'},字典取值操作比较方法
res_dic = requests.post(url).json()

post请求 - 传参类型是key-value形式

import requests
import json
url = 'http://127.0.0.1:5000/gettest?username=abc'
data = {"username": "abc"}
#返回结果类型是str:{"msg": "pass"}
res = requests.post(url, data).text
#可以通过json.loads将字符串(json串)转换为字典类型,方便取值操作
res_dic = json.loads(res)

也可以使用.json(),返回结果类型是字典?(注:接口请求的返回值类型 与接口的返回定义类型有关)

#返回结果类型为字典:{'msg': 'pass'},字典取值操作比较方法
res_dic = requests.post(url, data).json()
post请求调用的接口实现如下:
 1 import flask
 2 from flask import request
 3 from flask import jsonify
 4 
 5 server = flask.Flask(__name__)
 6 @server.route('/gettest', methods=['post'])
 7 def test1():
 8 #request.values.get('xxx') 这种获取请求参数的方式,可以通过url拼接参数和key-value形式访问接口。
 9 name = request.values.get('username')
10 if name == 'abc':
11 #接口返回值类型为字典
12 res = {"msg": "pass"}
13 return jsonify(res)
14 else:
15 res = {'msg': "fail"}
16 return jsonify(res)
17 server.run(debug=True)
View Code

?post请求- 传参类型是json

import requests
url = 'http://127.0.0.1:5000/register'
data = {
 "username": "admin",
 "pwd": "123456",
 "c_pwd": "123456"
}
#json类型传参,post接口请求时,需要指明下请求参数是json类型,返回结果是字典:{'msg': 'ok'}
res = requests.post(url, json=data).json()
print(type(res), res)

?post请求- 传参类型是json,多层json嵌套

import requests
url = 'http://127.0.0.1:5000/register'
data = {
 "username": "admin",
 "pwd": "123456",
 "c_pwd": "123456",
 "items": {
 "id": 1,
 "age": 18,
 "sex": "man"
 }
}
#json类型传参,post接口请求时,需要指明下请求参数是json类型,返回结果是字典:{'msg': 'ok'}
res = requests.post(url, json=data).json()
post请求调用的接口,json传参,代码实现如下:
 1 import flask
 2 from flask import request
 3 from flask import jsonify
 4 
 5 server = flask.Flask(__name__)
 6 @server.route('/register', methods=['post'])
 7 def test1():
 8 #request.json,传参类型为json,返回结果类型为字典:{'pwd': '123456', 'username': 'asdf', 'c_pwd': '123456'}
 9 res_dic = request.json
10 username = res_dic.get('username')
11 pwd = res_dic.get('pwd')
12 c_pwd = res_dic.get('c_pwd')
13 if username and pwd and c_pwd:
14 if res_dic.get('username') == 'admin':
15 if res_dic.get('pwd') == res_dic.get('c_pwd'):
16 return jsonify({'msg': "ok"})
17 else:
18 return jsonify({'msg': "密码不一致"})
19 else:
20 return jsonify({'msg': "username不能注册"})
21 server.run(debug=True)
View Code

post请求 - 上传文件

import requests
url = 'http://127.0.0.1:5000/upload'
#上传接口请求数据,指定上传文件的路径
data = {"file_name": open('E:/python_workspace/base-code/asdf.txt', encoding='utf8')}
#post请求,请求参数类型是file,返回结果类型是字典
res = requests.post(url, files=data).json()
print(type(res), res)
post请求调用的上传接口,代码实现如下:
 1 import flask
 2 from flask import request
 3 from flask import jsonify
 4 import time, os
 5 from flask import send_from_directory
 6 #上传文件接口
 7 server = flask.Flask(__name__)
 8 @server.route('/upload', methods=['post'])
 9 def upload():
10 #获取请求参数,传参类型是file,返回结果类型是一个对象:<class 'werkzeug.datastructures.FileStorage'> <FileStorage: '新建文本文档.txt' ('text/plain')>
11 file = request.files.get('file_name', None)
12 #判断file是否为空,若为空则没有上传文件
13 if file:
14 cur_time = time.strftime('%Y%m%d%H%M%S') #获取当前时间
15 upload_name = file.filename #获取上传文件的名称
16 new_file_name = cur_time+upload_name #给文件重命名,防止有重复文件覆盖
17 # 保存文件,指定文件上传的路径
18 file.save('E:/python_workspace/base-code/'+new_file_name)
19 return jsonify({"code": "ok"})
20 else:
21 return jsonify({"code": "请上传文件"})
22 
23 if __name__ == '__main__':
24 server.run(debug=True)
View Code

post请求 - 添加cookies

import requests
url = 'http://127.0.0.1:5000/set_cookies'
data = {"username": "xiaobai", "monkey": "999"}
#请求cookie参数
cookie = {"token": "123456"}
#接口请求,返回结果类型是字典:{'msg': 'ok'}
res = requests.post(url, data=data, cookies=cookie).json()
print(type(res), res)
post请求调用的添加cookie接口,代码实现如下:
 1 import flask
 2 from flask import request
 3 from flask import jsonify
 4 server = flask.Flask(__name__)
 5 @server.route('/set_cookies', methods=['post'])
 6 def set_cookies():
 7 print('获取到的cookie:', request.cookies) #{'token': '123456'}
 8 print('获取到的请求数据:', request.values) # CombinedMultiDict([ImmutableMultiDict([]), ImmutableMultiDict([('monkey', '999'), ('username', 'xiaobai')])])
 9 token = request.cookies.get('token')
10 if token:
11 return jsonify({"msg": "ok"})
12 else:
13 return jsonify({"msg": "没有添加cookie"})
14 
15 if __name__ == '__main__':
16 server.run(debug=True)
View Code

?post请求- 添加headers

import requests
header_url = 'http://127.0.0.1:5000/set_headers'
data = {"username": "123456", "monkey": "666"}
#添加header信息
header = {'Content-Type': "application/json"}
#接口请求
res = requests.post(header_url, data, headers=header).json()

欢迎评论~~~

?

文档

python笔记8:requests模块

python笔记8:requests模块:简介: requests是python的一个http客户端库,跟urlib、urlib2类似,requests模块是基于urlib模块开发的,代码实现更为简洁。 模块安装: pip install requests ,使用requests模块时直接import requests即可。 简单使用requests:
推荐度:
标签: 笔记 模块 python
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top