如何利用Python的Flask框架与Vue.js创建RESTful API服务

简介: 【4月更文挑战第10天】本文介绍了如何使用Flask和Vue.js创建一个前后端分离的RESTful API服务。Flask作为后端框架,负责提供CRUD操作,与SQLite数据库交互;Vue.js作为前端框架,构建用户界面并利用axios库与后端API通信。通过示例代码,展示了Flask设置路由处理用户数据以及Vue组件如何调用API获取和操作数据。此基础结构为构建更复杂的Web应用提供了起点。

在现代Web开发中,前后端分离的架构已经成为一种流行的设计模式。在这种模式中,后端专注于提供高效的RESTful API服务,而前端则负责构建用户界面和交互逻辑。Python的Flask框架以其轻量级和灵活性著称,是构建API服务的绝佳选择。与此同时,Vue.js作为一个渐进式的JavaScript框架,在前端正变得越来越流行。本文将指导你如何使用Flask框架和Vue.js来创建一个功能完善的RESTful API服务。

首先,我们需要安装Flask。在命令行中执行以下命令:

pip install Flask

接下来,我们创建一个简单的Flask应用,它将提供基本的CRUD(创建、读取、更新、删除)操作。在一个名为app.py的文件中,我们可以定义如下路由:

from flask import Flask, request, jsonify
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'  # 使用SQLite数据库
db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50), unique=True, nullable=False)

@app.route('/users', methods=['GET'])
def get_users():
    users = User.query.all()
    return jsonify([user.name for user in users])

@app.route('/users', methods=['POST'])
def create_user():
    data = request.get_json()
    new_user = User(name=data['name'])
    db.session.add(new_user)
    db.session.commit()
    return jsonify({
   'message': 'User created!'}), 201

@app.route('/users/<int:user_id>', methods=['PUT'])
def update_user(user_id):
    data = request.get_json()
    user = User.query.get(user_id)
    if user:
        user.name = data['name']
        db.session.commit()
        return jsonify({
   'message': 'User updated!'})
    else:
        return jsonify({
   'error': 'User not found'}), 404

@app.route('/users/<int:user_id>', methods=['DELETE'])
def delete_user(user_id):
    user = User.query.get(user_id)
    if user:
        db.session.delete(user)
        db.session.commit()
        return jsonify({
   'message': 'User deleted!'})
    else:
        return jsonify({
   'error': 'User not found'}), 404

if __name__ == '__main__':
    app.run(debug=True)

在这个例子中,我们使用了Flask-SQLAlchemy扩展来处理数据库操作。我们定义了一个User模型,并创建了对应的CRUD路由。这些路由分别处理获取所有用户、创建新用户、更新用户信息和删除用户的请求。

现在,让我们转向前端部分。使用Vue.js,我们可以构建一个用户界面来与后端API进行交互。首先,我们需要安装Vue CLI:

npm install -g @vue/cli

然后,我们创建一个新的Vue项目:

vue create frontend
cd frontend

在项目中,我们可以使用axios库来发送HTTP请求。首先安装axios:

npm install axios

接下来,我们在src目录下创建一个名为ApiService.js的文件,用于封装与后端通信的逻辑:

import axios from 'axios';

export default {
   
  getUsers() {
   
    return axios.get('http://localhost:5000/users');
  },
  createUser(data) {
   
    return axios.post('http://localhost:5000/users', data);
  },
  updateUser(id, data) {
   
    return axios.put(`http://localhost:5000/users/${
     id}`, data);
  },
  deleteUser(id) {
   
    return axios.delete(`http://localhost:5000/users/${
     id}`);
  },
};

最后,在Vue组件中,我们可以使用这个ApiService来获取数据和发送请求。例如,在一个名为UserList.vue的组件中,我们可以这样获取用户列表:

<template>
  <div>
    <ul>
      <li v-for="user in users" :key="user.id">{
  { user.name }}</li>
    </ul>
  </div>
</template>

<script>
import ApiService from './ApiService';
export default {
    
  data() {
    
    return {
    
      users: [],
    };
  },
  created() {
    
    ApiService.getUsers().then(response => {
    
      this.users = response.data;
    });
  },
};
</script>

通过以上步骤,我们已经成功创建了一个使用Flask和Vue.js的RESTful API服务。这个服务包括了前后端的基本交互,可以作为更复杂应用的起点。在实际开发中,你可能还需要添加用户认证、错误处理、数据验证等功能。但希望这篇文章为你提供了一个良好的基础,让你能够继续探索和完善你的API服务。

相关文章
|
1月前
|
数据采集 供应链 API
Python爬虫与1688图片搜索API接口:深度解析与显著收益
在电子商务领域,数据是驱动业务决策的核心。阿里巴巴旗下的1688平台作为全球领先的B2B市场,提供了丰富的API接口,特别是图片搜索API(`item_search_img`),允许开发者通过上传图片搜索相似商品。本文介绍如何结合Python爬虫技术高效利用该接口,提升搜索效率和用户体验,助力企业实现自动化商品搜索、库存管理优化、竞品监控与定价策略调整等,显著提高运营效率和市场竞争力。
81 3
|
2月前
|
数据采集 JSON API
如何利用Python爬虫淘宝商品详情高级版(item_get_pro)API接口及返回值解析说明
本文介绍了如何利用Python爬虫技术调用淘宝商品详情高级版API接口(item_get_pro),获取商品的详细信息,包括标题、价格、销量等。文章涵盖了环境准备、API权限申请、请求构建和返回值解析等内容,强调了数据获取的合规性和安全性。
|
1月前
|
数据采集 JavaScript 前端开发
京东商品详情 API 接口指南(Python 篇)
本简介介绍如何使用Python抓取京东商品详情数据。首先,需搭建开发环境并安装必要的库(如requests、BeautifulSoup和lxml),了解京东反爬虫机制,确定商品ID获取方式。通过发送HTTP请求并解析HTML,可提取价格、优惠券、视频链接等信息。此方法适用于电商数据分析、竞品分析、购物助手及内容创作等场景,帮助用户做出更明智的购买决策,优化营销策略。
|
3月前
|
JSON 关系型数据库 测试技术
使用Python和Flask构建RESTful API服务
使用Python和Flask构建RESTful API服务
142 2
|
4月前
|
开发框架 .NET API
Windows Forms应用程序中集成一个ASP.NET API服务
Windows Forms应用程序中集成一个ASP.NET API服务
123 9
|
4月前
|
前端开发 API 开发者
深度剖析:AJAX、Fetch API如何成为Python后端开发者的最佳拍档!
深度剖析:AJAX、Fetch API如何成为Python后端开发者的最佳拍档!
60 4
|
4月前
|
前端开发 API 数据格式
颠覆传统!AJAX、Fetch API与Python后端,开启Web开发新篇章!
在Web开发领域,技术的快速迭代推动着应用不断进化。传统前后端交互方式已无法满足现代Web应用对高效、实时性和用户体验的需求。AJAX作为异步通信的先驱,使页面无需刷新即可更新部分内容,显著提升用户体验;尽管XML曾是其主要数据格式,但如今JSON已成为主流。Fetch API则以其简洁、灵活的特点成为AJAX的现代替代品,基于Promises的异步请求让开发更加高效。与此同时,Python后端凭借高效稳定和丰富的库支持,成为众多开发者的首选,无论是轻量级的Flask还是全功能的Django,都能为Web应用提供强大的支撑。
54 0
|
3月前
|
JavaScript 前端开发
JavaScript中的原型 保姆级文章一文搞懂
本文详细解析了JavaScript中的原型概念,从构造函数、原型对象、`__proto__`属性、`constructor`属性到原型链,层层递进地解释了JavaScript如何通过原型实现继承机制。适合初学者深入理解JS面向对象编程的核心原理。
48 1
JavaScript中的原型 保姆级文章一文搞懂
|
7月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
138 2
|
3月前
JS+CSS3文章内容背景黑白切换源码
JS+CSS3文章内容背景黑白切换源码是一款基于JS+CSS3制作的简单网页文章文字内容背景颜色黑白切换效果。
33 0

热门文章

最新文章