配合数据库进行网页的动态数据上传

1.接口文档编写

1.1 什么是接口文档

在项目开发中,web项目的前后端通常分离开发,

此过程中,需要由前后端工程师共同定义接口,编写接口文档,

之后大家都根据这个接口文档进行开发,到项目结束前都要一直维护。

1.2 创建文件

1.3 接口文档示例

(docs/interface/readme.md)

1.3.1 旅游网的接口文档

# 旅游网的接口文档 RESTful风格接口

* 200请求数据成功

* 201提交数据成功

* 400参数错误

* 401未登录

* 403没有权限

* 404目标资源丢失

* 500服务器正忙

## 接口强求地址

1.测试环境

http://test.xxx.top

2.生产环境

http://www.xxx.com

1.3.2 错误代码文字提示

## 错误代码文字提示
```
{
    "error_code":"400000"
    "error_msg":"该字段不能为空。"
    "error_list":{
        "password":["该字段不能为空"]
    }
}
```

1.3.3  请求头添加内容/分页响应的参数

<table class="table table-hover table-condensed"><thead><tr><th>字段</th><th>类型</th><th>说明</th></tr></thead><tbody><tr class="info"><td>meta</td><td></td><td>分页元数据,解释如下</td></tr><tr><td>total_count</td><td>int</td><td>根据传入的条件检索出的记录条数</td></tr><tr><td>current_count</td><td>int</td><td>当前第几页</td></tr><tr><td>page_count</td><td>int</td><td>总页数</td></tr><tr class="info"><td>objec</td><td>Array</td><td>objects为返回的对象列表</td></tr></tbody>
</table>

1.3.4  一级/二级标题

## 接口列表
### 1.系统模块

### 2.景点模块

1.4 首页轮播图的接口

(trip_server\docs\interface\system\slider_list.md)

1.4.1 请求地址/调用方式

## 首页轮播图的接口

### 请求地址
/system/slider/list
### 调用方式
GET

1.4.2  请求参数

### 请求参数
<table>
<thead>
<tr><th>字段</th><th>必选</th><th>类型</th><th>说明</th>
</tr>
</thead>
<tbody>
<tr><td>types</td><td>true</td><td>int</td><td>轮播图类型(10:首页轮播)</td>
</tr>
</tbody>
</table>

1.4.3 返回结果

## 返回结果
```
{"meta":{"total_count":3,"page_count":2,"current_page":1},"objects":[{"pk":1,"name":"轮播图1","desc":null,"img":http://django.xxx.com/medias/slider/banner1.jpg,"target_url":null},{"pk":2,"name":"轮播图2","desc":null,"img":http://django.xxx.com/medias/slider/banner2.jpg,"target_url":null}]
}```

2.轮播图接口数据获取

2.1 接口配置

文件位置:src\utils\apis.js

//用于访问服务器端接口
const apiHost = "/api"//系统相关的接口
const SystemApis = {sliderListUrl:apiHost+"/system/slider/list/"
}
//景点相关的接口
const SightApis = {sightListUrl:apiHost+"/sight/sight/list/"
}
//对外暴露
export{SystemApis,SightApis
}

2.2 前端跨域

文件地址:vite.config.js

import { fileURLToPath, URL } from 'node:url'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'export default defineConfig({plugins: [vue(),],resolve: {alias: {'@': fileURLToPath(new URL('./src', import.meta.url))}},//👇server:{proxy:{'/api':{target:'http://localhost:8000',changeOrigin:true,rewrite:(path)=>path.replace(/^\/api/,'')}}}//👈
})

2.3 配置服务端媒体地址

文件位置:pycharm--trip_server/settings.py

3. 上传轮播图动态数据

3.1 配置轮播图数据接口

格式见2.2

3.2 访问接口获取数据

import { ref,onMounted } from 'vue';// 获得vue中提供的响应式工具及生命周期工具

import { ajax } from '@/utils/ajax';//获得axios异步请求对象

import { SystemApis } from '@/utils/apis';//获得访问目标(轮播图)

const bannerList = ref([ ])//创建列表用于存放接口返回的轮播图数据

bannerList.value =res.data.objects//将获取的轮播图数据,给到响应式对象bannerlist中

console.log(res.data) //控制台输出响应对象中的数据,

测试是否console.log(bannerList.value)获取到接口里的数据        

<script setup>
import { ref,onMounted } from 'vue';
import { ajax } from '@/utils/ajax';
import { SystemApis } from '@/utils/apis';
//轮播图原静态数据
// const bannerList = ref([
//     {id: '1', imgUrl: '/static/home/banner/banner1.jpg'}, 
//     {id: '2', imgUrl: '/static/home/banner/banner2.jpg'}, 
//     {id: '3', imgUrl: '/static/home/banner/banner3.jpg'}
// ])
const bannerList = ref([])
//访问接口获取数据
const getBannerList=()=>{ajax.get(SystemApis.sliderListUrl).then(res =>{bannerList.value =res.data.objectsconsole.log(res.data) })
}
</script>

src\components\home\Banner.vue全部代码:

<script setup>
import { ref,onMounted } from 'vue';
import { ajax } from '@/utils/ajax';
import { SystemApis } from '@/utils/apis';const bannerList = ref([])
//访问接口获取数据
const getBannerList=()=>{ajax.get(SystemApis.sliderListUrl).then(res =>{bannerList.value =res.data.objects})
}
onMounted(()=>{getBannerList()
})
</script><template><div class="home-banner-box"><!-- 轮播图 --><van-swipe class="my-swipe" :autoplay="3000" indicator-color="white"><van-swipe-item v-for="item in bannerList" :key="item.id"><img :src="item.img_url"><!-- 注意“img_url”👆命名格式 --></van-swipe-item></van-swipe></div>
</template><style lang="less">
.home-banner-box {img {width: 100%;height: auto;}
}
</style>

4.上传热门景点动态数据(by Axios)

4.1 配置轮播图数据接口

4.2 <script> 模块:

params://向目标发起请求时,携带数据。

<script setup>
import { ref,onMounted } from 'vue';
import { ajax } from '@/utils/ajax';
import { SightApis } from '@/utils/apis';
//原热门景点静态数据
// const hotList = ref([
//     { id: 1, img: '/static/home/hot/h1.jpg', name: '景点名称', price: 65 },
//     { id: 2, img: '/static/home/hot/h2.jpg', name: '景点名称', price: 65 },
//     {........}
// ])
const hotList = ref([])
const getHotList = () => {ajax.get(SightApis.sightListUrl,{params:{is_hot:1}}).then(({data})=>{hotList.value = data.objects// console.log(hotList.value)})
}
onMounted(()=>{getHotList()
})
</script>

4.3 <template>模块

依照数据库内格式修改动态数据名称,如main_img、min_price等。

<template><!-- 热门景点 --><div class="home-hot-box"><van-cell title="热门推荐" is-link value="全部榜单" icon="/static/home/hot/fire.png" title-style="text-align:left" /><div class="box-main"><RouterLink class="hot-item" v-for="item in hotList" :key="item.id" :to="`#`"><div class="img"><span class="span"></span><img :src="item.main_img" alt=""></div><h5 class="van-ellipsis">{{ item.name }}</h5><div class="line-price"><span class="price">¥{{ item.min_price }}</span>起</div></RouterLink></div></div></template>

5.上传精选景点动态数据(by Axios)

文件地址:src\components\home\Fine.vue

<script setup>
import ListSight from '../common/ListSight.vue';
import { ref,onMounted } from 'vue';
import { ajax } from '@/utils/ajax';
import { SightApis } from '@/utils/apis';
//原精选景点静态数据
// const fineList = ref([
//     { id: 1, name: '景点名称', score: 5, price: 98 },
//     { id: 2, name: '景点名称', score: 4.5, price: 98 },
//     {.........},
// ])
const FineList = ref([])
const getFineList= ()=>{ajax.get(SightApis.sightListUrl,{params:{is_top:1}}).then(({data})=>{FineList.value = data.objectsconsole.log(FineList.value)})
}
onMounted(()=>{getFineList()
})
</script>

文件地址:src\components\common\ListSight.vue

<template><a href="#" class="sight-item"><img :src="item.main_img" alt=""><div class="right"><h5>{{ item.name }}</h5><van-rate v-model="item.score" allow-half readonly="" /><div class="tips">{{item.comment_count}}人点评|100%满意</div><div class="tips" light>{{item.province}}-{{item.city}}</div><div class="line-price">¥{{ item.min_price }}</div></div></a>
</template>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/58405.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构——基础知识补充

1.队列 1.普通队列 queue.Queue 是 Python 标准库 queue 模块中的一个类&#xff0c;适用于多线程环境。它实现了线程安全的 FIFO&#xff08;先进先出&#xff09;队列。 2.双端队列 双端队列&#xff08;Deque&#xff0c;Double-Ended Queue&#xff09;是一种具有队列和…

OpenSSL

OpenSSL 概述 OpenSSL 是一个开源的、安全传输协议实现工具&#xff0c;广泛应用于数据加密与解密、证书生成与管理以及其他安全性相关的任务。在现代网络安全中&#xff0c;OpenSSL 被用于构建和维护 SSL/TLS 通信&#xff0c;确保数据在传输过程中的机密性和完整性。 简单来…

「C/C++」C/C++预处理 之 X宏(X Macro)

✨博客主页何曾参静谧的博客&#x1f4cc;文章专栏「C/C」C/C程序设计&#x1f4da;全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasoli…

WPF+MVVM案例实战(四)- 自定义GroupBox边框样式实现

文章目录 1、项目准备2、功能实现1、EnviromentModel.cs 代码2、GroubBoxViewModel.cs 代码实现3、ViewModelLocator.cs 依赖注入4、GroubBoxWindow.xaml 样式布局5、数据绑定3、效果展示4、资源获取1、项目准备 打开项目 Wpf_Examples,新建 GroubBoxWindow.xaml 界面、Groub…

第十六章 Vue组件化开发及组件局部/全局注册

目录 一、组件化 1.1. 组件概述 1.2. 语法高亮插件 ​编辑 1.3. 组件内部组成 1.4. 让组件支持 less 1.5. 组件注册的两种方式 二、局部注册 2.1. 使用描述 2.2. 脚手架工程变动的核心代码 2.2.1. 工程结构图 2.2.2. App.vue 2.2.3. WzxHeader.vue 2.2.4. WzxMain…

excel斜线表头

检验数据验证对象 鼠标放在检验数据 验证对象中间&#xff0c;altenter 之后空格 选中格子&#xff0c;右键单元格格式&#xff0c; 完成 如果是需要多分割&#xff0c;操作一样&#xff0c;在画斜线的时候会有区别&#xff0c;在插入里面用直线画斜线即可 在表格插入的时…

【python】OpenCV—Connected Components

文章目录 1、任务描述2、代码实现3、完整代码4、结果展示5、涉及到的库函数6、参考 1、任务描述 基于 python opencv 的连通分量标记和分析函数&#xff0c;分割车牌中的数字、号码、分隔符 cv2.connectedComponentscv2.connectedComponentsWithStatscv2.connectedComponents…

日期选择简化版今日、本周、本月、本季度、本年

function 未来之窗_时间_现在() {let date new Date(),year date.getFullYear(), //获取完整的年份(4位)month date.getMonth() 1, //获取当前月份(0-11,0代表1月)strDate date.getDate() // 获取当前日(1-31),小时 date.getHours(),分钟 date.getMinutes();if (month &…

基于安卓Android的健康饮食系统APP(源码+文档+部署+讲解)

&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 会持续一直更新下去 有问必答 一键收藏关注不迷路 源码获取&#xff1a;https://pan.baidu.com/s/1aRpOv3f2sdtVYOogQjb8jg?pwdjf1d 提取码: jf1d &#…

【Unity基础】初识UI Toolkit - 编辑器UI

&#xff08;本文所需图片在文章上面的资源中&#xff0c;点击“立即下载”。&#xff09; 本文介绍了如何通过UI工具包&#xff08;UI Toolkit&#xff09;来创建一个编辑器UI。 一、创建项目 1. 打开Unity创建一个空项目&#xff08;任意模板&#xff09;&#xff0c;这里我…

【网络】传输层协议TCP

目录 四位首部长度 序号 捎带应答 标记位 超时重传机制 连接管理机制&#xff08;RST标记位&#xff09; 三次握手及四次挥手的原因 TCP的全称是传输控制协议&#xff08;Transmission Control Protocol&#xff09;&#xff0c;也就是说&#xff0c;对于放到TCP发送缓冲…

docker基础篇(尚硅谷)

学习链接 docker1️⃣基础篇&#xff08;零基小白&#xff09; - 语雀文档 (即本篇) Docker与微服务实战&#xff08;基础篇&#xff09; Docker与微服务实战&#xff08;高级篇&#xff09;- 【上】 Docker与微服务实战&#xff08;高级篇&#xff09;- 【下】 文章目录 学习…

Spark RDD

概念 RDD是一种抽象&#xff0c;是Spark对于分布式数据集的抽象&#xff0c;它用于囊括所有内存中和磁盘中的分布式数据实体 RDD 与 数组对比 对比项数组RDD概念类型数据结构实体数据模型抽象数据跨度单机进程内跨进程、跨计算节点数据构成数组元素数据分片(Partitions)数据…

OmicsTools软件和R语言分析环境安装配置答疑汇总最新版

OmicsTools软件和R语言分析环境安装配置答疑汇总 前言提示 我开发了一款本地电脑无限使用的零代码生信数据分析作图神器电脑软件OmicsTools&#xff0c;欢迎大家使用进行生物医学科研数据分析和作图&#xff0c;不需要学编程写代码&#xff0c;分析次数没有限制&#xff0c;可…

java web调试时清理当前网址的缓存

java web调试时清理当前网址的缓存 背景 开发后端接口的时候&#xff0c;出现页面已经重新部署启动。但页面报错404的问题。询问前端同学后&#xff0c;发现是因为没有清理页面缓存导致的。特别在此记录。 清理页面缓存 操作方式 chrome浏览器 F12 > 应用 > 存储 &g…

分布式 ID 生成策略(二)

在上一篇文章&#xff0c;分布式 ID 生成策略&#xff08;一&#xff09;&#xff0c;我们讨论了基于数据库的 ID 池策略&#xff0c;今天来看另一种实现&#xff0c;基于雪花算法的分布式 ID 生成策略。 如图所示&#xff0c;我们用 41 位时间戳 12 位机器 ID 10 位序列号&a…

解决edge浏览器无法同步问题

有时候电脑没带&#xff0c;但是浏览器没有同步很烦恼。chrome浏览器的同步很及时在多设备之间能很好使用。但是edge浏览器同步没反应。 在这里插入图片描述 解决方法&#xff1a; 一、进入edge浏览器点击图像会显示未同步。点击“管理个人资料”&#xff0c;进入后点击同步&…

【机器学习】14. 集成学习 ensemble: bagging, boosting, 随机森林 random forest

集成学习 ensemble: bagging, boosting, 随机森林 random forest 1. Ensemble 整体认知2. 使用Ensemble的原因3. 构建Ensemble 的方法4. Bagging&#xff08;bootstrap aggregation&#xff09;特点 5. BoostingAdaBoost整体算法思路 6. 比较7. 随机森林 1. Ensemble 整体认知 …

记录一次更新idea

一、官网下载安装包&#xff0c;拿所需版本 二、链接下载&#xff0c; 逐行仔细读readme.txt 三、执行script(unstall<->install)vbs、-javaagent:更改时记得

低代码平台如何通过AI赋能,实现更智能的业务自动化?

引言 随着数字化转型的加速推进&#xff0c;企业在日常运营中面临的业务复杂性与日俱增。如何快速响应市场需求&#xff0c;优化流程&#xff0c;并降低开发成本&#xff0c;成为各行业共同关注的核心问题。低代码平台作为一种能够快速构建应用程序的工具&#xff0c;因其可视化…