当前位置: 首页 > article >正文

vue3+fastAPI最简单例子

我想学习vue3和fastAPI,我想做一个最简单的项目练习一下。 网页中只有一个输入框和按钮。按钮实现的功能是,把输入框中的数值加2.这个加法由python语言实现。

0、项目结构:

my_project/
│
├── frontend/  # Vue 3前端项目
│   ├── src/
│   │   ├── App.vue
│   │   ├── main.js
│   │   └── components/
│   │       └── HelloWorld.vue
│   ├── public/
│   │   └── index.html
│   └── package.json
│
└── backend/  # FastAPI后端项目
    ├── main.py
    └── requirements.txt

一、后端(FastAPI) 

1、安装FastAPI和Uvicorn(用于运行FastAPI应用):

pip install fastapi uvicorn

 2、在backend/main.py中编写以下代码:

from fastapi import FastAPI, HTTPException
from fastapi.middleware.cors import CORSMiddleware
from pydantic import BaseModel

app = FastAPI()

# 添加 CORS 中间件
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],  # 允许所有来源,或指定特定的来源
    allow_credentials=True,
    allow_methods=["*"],  # 允许所有方法
    allow_headers=["*"],  # 允许所有头部
)

class Item(BaseModel):
    number: int

@app.post("/add_two/")
async def add_two(item: Item):
    if item.number is None:
        raise HTTPException(status_code=400, detail="Number is required")
    return {"result": item.number + 2}

3、运行后端服务:

uvicorn backend.main:app --reload

 二、前端(Vue 3)

1、安装Axios(用于发送HTTP请求):

npm install axios

 2、代码

<template>
  <div id="app">
    <input v-model="number" type="number" placeholder="Enter a number" />
    <button @click="addTwo">Add Two</button>
    <p>Result: {{ result }}</p>
  </div>
</template>

<script>
import axios from 'axios';

export default {
  name: 'App',
  data() {
    return {
      number: 0,
      result: 0,
    };
  },
  methods: {
    async addTwo() {
      console.log("addTwo method called");
      try {
        console.log("Current number:", this.number); // 调试信息
        const response = await axios.post('http://127.0.0.1:8000/add_two/', { number: this.number });
        this.result = response.data.result;
        console.log("Result:", this.result); // 调试信息
      } catch (error) {
        console.error(error);
      }
    },
  },
};
</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

3、运行前端项目:

npm run serve


http://www.kler.cn/a/442064.html

相关文章:

  • 小主机大用途:香橙派使用Docker轻松搭建Lsky Pro图床实操教程
  • vue 自定义组件image 和 input
  • AWTK-WEB 快速入门(1) - C 语言应用程序
  • 【动态规划】多歧路 , 今安在? - 路径问题
  • 监控视频汇聚融合云平台一站式解决视频资源管理痛点
  • 大数据治理:开启数据价值挖掘之旅
  • Node的学习以及学习通过Node书写接口并简单操作数据库
  • 后台管理系统权限功能菜单和按钮权限如何实现的
  • 【附件】Selenium chromedriver 驱动及浏览器下载
  • windows C#-命名实参和可选实参(上)
  • 【mysql】如何查看大表记录行数
  • P8795 [蓝桥杯 2022 国 A] 选素数
  • [java]网络编程
  • 使用vitejs搭配vue.js,快速构建简单的网站案例展示Demo
  • Java基础夯实——2.6 Java中锁
  • STM32-笔记3-驱动蜂鸣器
  • 警告 torch.nn.utils.weight_norm is deprecate 的参考解决方法
  • Scala 的迭代器
  • 基于遗传优化SVM支持向量机的数据分类算法matlab仿真,SVM通过编程实现,不使用工具箱
  • VMware Workstation Pro 17 与 虚拟机 ——【安装操作】