欢迎访问我的网站,希望内容对您有用,感兴趣的可以加入免费知识星球。

Python实用模块(二十七)requests

实用模块 迷途小书童 3年前 (2020-11-27) 5199次浏览 3个评论

软硬件环境

  • windows 10 64bits
  • anaconda with python 3.7
  • requests 2.25.0

视频看这里

此处是 youtube 的播放链接,需要科学上网。喜欢我的视频,请记得订阅我的频道,打开旁边的小铃铛,点赞并分享,感谢您的支持。

简介

requests 是用来在 Python 中进行标准 HTTP 请求的第三方库。 它将请求背后的复杂性抽象成一个漂亮,简单的 API,以便你可以专注于与服务交互和在应用程序中使用数据。

安装

使用 pip 进行安装

pip install requests

http请求格式

requests 的使用其实非常简单,针对不同的 http 方法,分别有不同的方法请求对应,如 getpostdelete

import requests

# get请求
r = requests.get(url='url')
r = requests.post(url='url')
r = requests.put(url='url')
r = requests.delete(url='url')
r = requests.head(url='url')
r = requests.options(url='url')

示例代码

利用前面我们分享的 flask restful 教程,先写个后台程序

from flask import Flask, jsonify, request
from flask_restful import Api, Resource, reqparse

USERS = [
    {"name": "zhangsan"},
    {"name": "lisi"},
    {"name": "wangwu"},
    {"name": "zhaoliu"}
]

class Users(Resource):

    def get(self):
        return jsonify(USERS)

    def post(self):
        args = reqparse.RequestParser() \
            .add_argument('name', type=str, location='json', required=True, help="名字不能为空") \
            .parse_args()

        if args['name'] not in USERS:
            USERS.append({"name": args['name']})

        return jsonify(USERS)

    def delete(self):
        USERS = []
        return jsonify(USERS)

class UserId(Resource):

    def __init__(self):
        self.parser = reqparse.RequestParser()
        self.parser.add_argument('name', type=str)
        self.parser.add_argument('age', type=int)

    def get(self, userid):
        datas = self.parser.parse_args()

        return jsonify(
            {"name": USERS[int(userid)].get('name'), "age": datas.get('age')}
        )

    def post(self, userid):
        file = request.files['file']
        file.save('flask_file.txt')

        return jsonify({
            'msg' : 'success'
        })

app = Flask(__name__)
api = Api(app, default_mediatype="application/json")

api.add_resource(Users, '/users')
api.add_resource(UserId, '/user/<userid>')

app.run(host='0.0.0.0', port=5000, use_reloader=True, debug=True)

完成后,启动 flask 服务

requests

get请求示例

先看个不带参的 get 请求

import requests

r = requests.get('http://127.0.0.1:5000/users')
print(r.json())
print(r.status_code)

运行结果如下

requests

再看个带参数的 get 请求

import requests

param = {"name":"lisi", "age":"18"}

r = requests.get('http://127.0.0.1:5000/user/1', params=param)
print(r.json())
print(r.status_code)

运行结果如下

requests

post请求示例

再来看看 post 请求,携带 json 数据

import requests
import json

param = {"name" : "xgx"}
headers = {"Content-type": "application/json"}

r = requests.post('http://127.0.0.1:5000/users', data=json.dumps(param), headers=headers)
print(r.json())
print(r.status_code)

运行结果如下

requests

再来看看 post 请求时提交文件的示例

import requests

files = {'file': open('test.txt', 'rb')}

r = requests.post('http://127.0.0.1:5000/user/1', files=files)
print(r.json())
print(r.status_code)

运行结果如下

requests

delete请求示例

最后看看 delete 请求示例

import requests

r = requests.delete('http://127.0.0.1:5000/users')
print(r.json())
print(r.status_code)

运行结果如下

requests

Python实用模块专题

更多有用的 python 模块,请移步

https://xugaoxiang.com/category/python/modules/

参考资料

喜欢 (0)

您必须 登录 才能发表评论!

(3)个小伙伴在吐槽
  1. 有一个问题,requests下载完成后应该放到哪里啊?
    匿名2021-05-26 07:58
  2. 哈哈
    匿名2020-11-29 23:47