文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

FastApi+Vue+LayUI如何实现前后端分离

2023-06-25 16:18

关注

小编给大家分享一下FastApi+Vue+LayUI如何实现前后端分离,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

前言

在前面的Api开发中,我们使用FastApi已经可以很好的实现。但是实际使用中,我们通常建议前后端项目分离。今天我们就使用FastApi+Vue+LayUI做一个前后端分离的Demo。

项目设计

后端

后端我们采用FastApi在新的test视图中,定义一个路由,并将其注册到app中,并且在test视图中定义一个接口,实现模拟从数据库读取数据供前端调用渲染。
代码

test.py

from fastapi import FastAPI,Depends,Header,HTTPException,APIRouterfrom fastapi.param_functions import Bodyfrom starlette.requests import Requestfrom starlette.templating import Jinja2Templatesfrom starlette import statusimport uvicornfrom deta import Detafrom fastapi.responses import StreamingResponsefrom fastapi.responses import JSONResponse# 实例化路由器router = APIRouter()templates = Jinja2Templates('templates')# 注意,视图这里使用router来声明请求方式&URI@router.get('/info')def user_list():    # vue的响应数据    items = [        {'id':'1','name':'phyger'},        {'id':'2','name':'fly'},        {'id':'3','name':'enheng'},        ]    return JSONResponse(content=items)@router.get('/')def welcome():    return "这里是测试路由"'''实际上,这里的home.html也是需要前端服务去向用户渲染的,但是我们为了方便演示,未启动前端服务器,直接将前端代码写在了home.html中,实际上,当用户请求/check的时候,前端代码会去请求/info接口获取数据,从而实现前端页面的数据渲染。'''@router.get('/check')def home(request:Request):    return templates.TemplateResponse(name='home.html',context={'request':request,})

前端

前端我们直接导入Vue、LayUI、Axios的JS和CSS的CDN资源,在Vue实例的mount阶段,使用axios调用后端接口拿到数据,使用LayUI的样式对table元素进行美化。
代码

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta http-equiv="X-UA-Compatible" content="IE=edge">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <script src="https://unpkg.com/vue@next"></script>    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>    <!-- 引入 layui.css -->    <link rel="stylesheet" href="https://www.layuicdn.com/layui/css/layui.css" rel="external nofollow" />    <!-- 引入 layui.js -->    <script src="https://www.layuicdn.com/layui/layui.js" type="text/javascript" charset="utf-8"></script>    <title>Home</title></head><body>    <div id="app">        <table class="layui-table">            <tr v-for="p in infos">                <td>[[ p.id ]]</td>                <td>[[ p.name ]]</td>            </tr>        </table>    </div>    <table id="test" class="layui-table"></table><script type="text/javascript">    const Vapp = Vue.createApp({        data() {            return {                infos: [{id:1,name:'phyger'}],                info: "hello vue..."            }        },        mounted() {            this.showinfo();        },        methods: {            showinfo(){                axios.get('/test/info')                .then(response=>{                    this.infos=response.data;                    console.log(response);                    console.log(this.infos);                })                ,err=>{                    console.log(err);                };            },        },    })    Vapp.config.compilerOptions.delimiters = ['[[', ']]']    Vapp.mount('#app')</script></body></html>

运行项目

启动 FastApi 后端服务器,访问 /test/check 接口。

FastApi+Vue+LayUI如何实现前后端分离

Q&A

Q:为什么在请求/info 接口总会出现一个 Temporary Redirect 重定向呢?

FastApi+Vue+LayUI如何实现前后端分离

A:原因是因为我们在 FastApi 接口定义的时候,uri 的格式不规范导致,uri 的结尾不需要/,如果你接口增加了/,我们使用浏览器访问 uri,浏览器会忽略结尾的/,FastApi 会在内部进行查重定向,将浏览器不带/的请求重定向到我们定义的带/的视图函数上。

以上是“FastApi+Vue+LayUI如何实现前后端分离”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯