简介:
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 requestsurl = '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 requestsurl = 'http://127.0.0.1:5000/gettest'#请传参类型是 name=xxx&pwd=123456data = {"username": "abc"}#返回结果类型是str:{"msg": "pass"}res = requests.get(url, data).text
登录后复制
也可以使用.json(),返回结果类型是字典 (注:接口请求的返回值类型 与接口的返回定义类型有关)
立即学习“Python免费学习笔记(深入)”;
#返回结果类型是字典:{"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 requestsimport jsonurl = '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 requestsimport jsonurl = '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 requestsurl = '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 requestsurl = '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.json10 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 requestsurl = '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,返回结果类型是一个对象: 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 requestsurl = '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 requestsheader_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模块的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2268385.html