后端接口返回一张图片

(一)项目背景

图形验证码后端接口返回一张图片,前端需要将返回的图片放到前端页面中

(二)解决方法以及代码

axios.get(API.getImgCode, {
  params: params,
  responseType: 'blob' // 必须说明 axios 请求类型
}).then((res) => {
  this.setState({
  imgCodeUrl: window.URL.createObjectURL(res.data) // 后端返回前端渲染
 })
}).catch(() => {
  this.setState({
  imgCodeUrl: require('@/assets/imageFail.png') // 默认图片
 })
})

(三)注意点汇总

1. axios 请求必须 添加 responseType, 不然图片不显示

2. 拿到接口的二进制

 把这个二进制 window.URL.createObjectURL() 就ok

(四)blob 介绍

https://developer.mozilla.org/zh-CN/docs/Web/API/Blob

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
好的,我来给你介绍一下如何使用Python、Flask和SQLAlchemy来实现一个后端接口,以实现一张表的CRUD操作。这里我们将使用SQLite数据库来存储数据。 首先,我们需要安装Flask和SQLAlchemy库。你可以使用pip来安装它们: ``` pip install flask sqlalchemy ``` 接下来,我们需要创建一个Flask应用程序,并将其连接到SQLite数据库。在这个例子中,我们将创建一个名为app.py的文件,并在其中编写代码。 ```python from flask import Flask, jsonify, request from flask_sqlalchemy import SQLAlchemy # 创建Flask应用程序 app = Flask(__name__) # 配置数据库连接 app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///data.db' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False # 创建SQLAlchemy实例 db = SQLAlchemy(app) # 定义模型类 class User(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(50), nullable=False) email = db.Column(db.String(50), nullable=False) def __repr__(self): return f'<User {self.name}>' # 创建数据库表 db.create_all() # 添加一些示例数据 user1 = User(name='Alice', email='alice@example.com') user2 = User(name='Bob', email='bob@example.com') db.session.add(user1) db.session.add(user2) db.session.commit() ``` 在这个例子中,我们创建了一个名为User的模型类,并定义了id、name和email三个属性。我们还定义了__repr__方法,以便在打印对象时可以更好地显示。 接下来,我们使用db.create_all()方法创建了数据库表,并使用db.session.add()方法向表中添加了两个示例数据。 现在,我们可以开始实现CRUD操作了。首先,让我们来实现一个获取所有用户的接口。 ```python @app.route('/users', methods=['GET']) def get_all_users(): users = User.query.all() result = [] for user in users: user_data = {'id': user.id, 'name': user.name, 'email': user.email} result.append(user_data) return jsonify(result) ``` 在这个接口中,我们使用User.query.all()方法查询了所有用户,并将结果转换成一个列表。然后,我们遍历这个列表,并将每个用户的id、name和email属性添加到一个字典中。最后,我们使用jsonify()方法将这个字典转换成一个JSON格式的响应。 接下来,让我们来实现一个获取单个用户的接口。 ```python @app.route('/users/<int:user_id>', methods=['GET']) def get_user(user_id): user = User.query.get_or_404(user_id) return jsonify({'id': user.id, 'name': user.name, 'email': user.email}) ``` 在这个接口中,我们使用User.query.get_or_404(user_id)方法查询了指定id的用户。如果找不到这个用户,Flask会自动返回一个404错误响应。否则,我们将该用户的id、name和email属性添加到一个字典中,并使用jsonify()方法将其转换成JSON格式的响应。 接下来,让我们来实现一个添加用户的接口。 ```python @app.route('/users', methods=['POST']) def add_user(): user_data = request.get_json() user = User(name=user_data['name'], email=user_data['email']) db.session.add(user) db.session.commit() return jsonify({'message': 'User created successfully!'}) ``` 在这个接口中,我们首先使用request.get_json()方法获取到POST请求中的JSON数据,并将其转换成一个字典。然后,我们使用这个字典中的name和email属性创建一个新的用户,并将其添加到数据库中。最后,我们返回一个JSON格式的响应,表示用户已创建成功。 最后,让我们来实现一个删除用户的接口。 ```python @app.route('/users/<int:user_id>', methods=['DELETE']) def delete_user(user_id): user = User.query.get_or_404(user_id) db.session.delete(user) db.session.commit() return jsonify({'message': 'User deleted successfully!'}) ``` 在这个接口中,我们首先使用User.query.get_or_404(user_id)方法查询了指定id的用户。如果找不到这个用户,Flask会自动返回一个404错误响应。否则,我们使用db.session.delete(user)方法将该用户从数据库中删除,并提交更改。最后,我们返回一个JSON格式的响应,表示用户已成功删除。 到此为止,我们已经完成了使用Python、Flask和SQLAlchemy实现一张表的CRUD操作的教程。你可以在这个基础上继续扩展你的应用程序,实现更多的功能。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值