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

Python实用模块(二十七)requests

实用模块 迷途小书童 3年前 (2020-11-27) 4980次浏览 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
Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

请关闭 Adblock 等类似浏览器插件,然后刷新页面访问,感谢您的支持!

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.