Python http网络请求处理,用requests就对了!

2023-07-0919:03:16后端程序开发Comments697 views字数 2749阅读模式

环境

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

简介

requests是用来在Python中进行标准HTTP请求的第三方库。它将请求背后的复杂性抽象成一个漂亮,简单的API,以便你可以专注于与服务交互和在应用程序中使用数据。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/51158.html

安装

使用pip进行安装文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/51158.html

pip install requests

http请求格式

requests的使用其实非常简单,针对不同的http方法,分别有不同的方法请求对应,如getpostdelete文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/51158.html

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教程,先写个后台程序文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/51158.html

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服务文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/51158.html

Python http网络请求处理,用requests就对了!文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/51158.html

requests

get请求示例

先看个不带参的get请求文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/51158.html

import requests

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

运行结果如下文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/51158.html

Python http网络请求处理,用requests就对了!文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/51158.html

requests

再看个带参数的get请求文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/51158.html

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)

运行结果如下文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/51158.html

Python http网络请求处理,用requests就对了!文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/51158.html

requests

post请求示例

再来看看post请求,携带json数据文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/51158.html

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)

运行结果如下文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/51158.html

Python http网络请求处理,用requests就对了!文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/51158.html

requests

再来看看post请求时提交文件的示例文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/51158.html

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)

运行结果如下文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/51158.html

Python http网络请求处理,用requests就对了!文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/51158.html

requests

delete请求示例

最后看看delete请求示例文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/51158.html

import requests

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

运行结果如下文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/51158.html

Python http网络请求处理,用requests就对了!文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/51158.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/bc/51158.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定