1.前言

  • fastadmin框架本身封装了一系列接口和插件来对表格数据进行管理(新增,编辑,删除),但是其使用的bootstrapTable基于jquery开发,基于某些原因,我们想要使用Vue框架代替bootstrapTable对页面进行渲染,但是会涉及参数的数据格式问题,此文对想一个的数据格式进行测试,方便后续使用

2.请求头

  • 请求头要设定两个字段:content-type 和 X-Requested-With
const result = await this.$axios({
url:"/admin/sp/mcsparepart/add",
headers:{
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",//数据格式申明
'X-Requested-With': 'XMLHttpRequest'
},
method:"post",
data:formData
})

3.参数的数据格式

vue中一般使用json数据,而fastadmin提供的接口使用的是表单数据格式,在转换过程中要注意两点:

  • json和form两种格式区别如下:
var jsonData = {
key1:"1",key2:"2"
}
var formData = "key1=1&key2=2"
  • 直接将json数据转换为表单字符串(用于get请求)
//将json数据转换成表单字符串
jsonToFormData(data){
var formData = ""
for(var key in data){
formData += `${key}=${data[key]}&`
}
//去除最后一个字母&
formData = formData.substring(0,formData.length-1)
return formData
}
  • 将json数据转换成表单对象(用于post请求)
//创建新的表单
var form = new FormData()
//遍历json,给表单添加字段
for(var key in json){
form.append(`row[${key}]`,json[key])
}
//返回表单
return form

4.对接表格列表接口

  • 表格列表接口的地址:页面地址
  • 请求方式:get
  • 需要设定请求头
headers:{
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",//数据格式申明
'X-Requested-With': 'XMLHttpRequest'
}
  • 基本参数(已解析视图):分页
offset: 10,limit: 10
  • 搜索过滤参数(已解析视图):
//搜索字段的值(json字符串)
filter: "{downmenu_value: value}"
//模糊搜索(LIKE)还是精确搜索(=)
op: "{downmenu_value:'LIKE'}"
  • 配合axios使用
//this.current_page当前页码
//this.page_size每页数量
//this.op字段搜索方式 {key:"Like",key2:"="}
//search_params搜索表单(过滤无数据的字段)
const result = await this.$axios({
url:"/admin/warehouse/warehouse",
headers:{
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",//数据格式申明
'X-Requested-With': 'XMLHttpRequest'
},
params:{
offset: (this.current_page-1) * this.page_size,//跳过条数
limit: this.page_size,//获取条数
op: JSON.stringify(this.op),//字段搜索方式
filter: JSON.stringify(search_params),//搜索字段值
}
})

5.对接新增接口和编辑接口

  • 新增接口的地址:页面地址 + /add?dialog=1
  • 编辑接口的地址(ids为要编辑行的id):页面地址 + /edit/ids/"+ids
  • 请求方式:post
  • post参数:post参数表单格式,每个参数名称外面需要包裹一层row,例如:
//创建新的表单
var form = new FormData()
//遍历json,给表单添加字段
for(var key in json){
form.append(`row[${key}]`,json[key])
}
//返回表单
return form

6.对接删除接口

  • 删除接口的地址:页面地址 + /del
  • 请求方式:post
  • post参数(指定action字段和ids字段,如果有多个id,则用逗号分割):action=del&ids=180
var formData = action=del&ids=180
const result = await this.$axios({
url:"/admin/sp/mcsparepart/del",
headers:{
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
'X-Requested-With': 'XMLHttpRequest'
},
method:"post",
data:formData
})

7.单独修改某个字段值

  • 接口地址:页面地址 + /multi
  • 请求方式:post
  • 参数:
ids: 1
params: status=0

8.完整代码

  • 获取表格数据
//发请求 获取表格数据
async getTableData(){
try {
//过滤出搜索表单没有值的字段
var search_params = {}
for(var key in this.form){
var value = this.form[key]
if(value){
search_params[key] = value
}
}
//表格加载状态
this.table_loading = true
//发请求
const result = await this.$axios({
url:"/admin/warehouse/warehouse",
headers:{
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",//数据格式申明
'X-Requested-With': 'XMLHttpRequest'
},
params:{
offset: (this.current_page-1) * this.page_size,//跳过条数
limit: this.page_size,//获取条数
op: JSON.stringify(this.op),//字段搜索方式
filter: JSON.stringify(search_params),//搜索字段值
}
})
//表格加载状态
this.table_loading = false
//表格加载状态
this.tableData = result.data.rows || []
this.total = result.data.total
} catch (error) {
console.log(error)
//表格加载状态
this.table_loading = false
}
},
  • 新增请求
//发请求 新增数据
async submitAdd(form){
try {
//提交loading状态
this.submit_loading = true
//发请求
const result = await this.$axios({
url:"/admin/warehouse/warehouse/add",
method:"post",
headers:{
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",//数据格式申明
'X-Requested-With': 'XMLHttpRequest'
},
data:form
})
//提交loading状态
this.submit_loading = false
//处理返回结果
if (result.data.code == 1) {
//关闭弹窗
this.dialogVisible = false
//重置页码
this.current_page = 1
//刷新表格数据
this.getTableData()
} else {
this.$message.error(result.data.msg)
}
} catch (error) {
console.log(error)
//提交loading状态
this.submit_loading = false
}
},
  • 编辑请求
async submitEdit(form){
try {
//提交loading状态
this.submit_loading = true
//发请求
const result = await this.$axios({
url:"/admin/warehouse/warehouse/edit/ids/" + this.edit_id,
method:"post",
headers:{
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",//数据格式申明
'X-Requested-With': 'XMLHttpRequest'
},
data:form
})
//提交loading状态
this.submit_loading = false
//处理返回结果
if (result.data.code == 1) {
//关闭弹窗
this.dialogVisible = false
//重置页码
this.current_page = 1
//刷新表格数据
this.getTableData()
} else {
this.$message.error(result.data.msg)
}
} catch (error) {
console.log(error)
//提交loading状态
this.submit_loading = false
}
},
  • 删除请求
//发请求 删除数据
async submitDelete(ids){
var formData = `action=del&ids=${ids}`
try {
this.table_loading = true
const result = await this.$axios({
url:"/admin/warehouse/warehouse/del",
method:"post",
data: formData,
headers:{
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",//数据格式申明
'X-Requested-With': 'XMLHttpRequest'
}
})
this.table_loading = false
//处理返回结果
if (result.data.code == 1) {
//关闭弹窗
this.dialogVisible = false
//刷新表格数据
this.getTableData()
} else {
this.$message.error(result.data.msg)
}
} catch (error) {
console.log(error)
this.table_loading = false
}
}

json数据对接的更多相关文章

  1. 通过AngularJS实现前端与后台的数据对接(二)——服务(service,$http)篇

    什么是服务? 服务提供了一种能在应用的整个生命周期内保持数据的方法,它能够在控制器之间进行通信,并且能保证数据的一致性. 服务是一个单例对象,在每个应用中只会被实例化一次(被$injector实例化) ...

  2. 格式化JSON数据

    function formatJson(json, options) { var reg = null, formatted = '', pad = 0, PADDING = ' '; options ...

  3. C# 读取网页JSON数据

    场景描述: 公司和别的系统需要对接,现在对方提供一个网址,数据都是json字符串,我需要对json数据进行处理. 提供的json数据如下格式 一.读取网址中的json数据 public string ...

  4. python 全栈开发,Day94(Promise,箭头函数,Django REST framework,生成json数据三种方式,serializers,Postman使用,外部python脚本调用django)

    昨日内容回顾 1. 内容回顾 1. VueX VueX分三部分 1. state 2. mutations 3. actions 存放数据 修改数据的唯一方式 异步操作 修改state中数据的步骤: ...

  5. [系列] Go 如何解析 JSON 数据?

    概述 最近掉进需求坑了,刚爬上来,评估排期出现了严重问题,下面三张图很符合当时的心境. 谈需求 估排期 开始干 为啥会这样,我简单总结了下: 与第三方对接. 跨团队对接. 首次用 Go 做项目. 业务 ...

  6. 数据对接:从Notion Database到低代码平台

    前言 Notion简介 近几年,有一款叫Notion的产品异常火爆,它是集笔记.任务管理.Wiki.数据管理为一体的产品,他主打两个理念「模块化」和「All-in-one」,Notion最有魅力的还是 ...

  7. 使用TSQL查询和更新 JSON 数据

    JSON是一个非常流行的,用于数据交换的文本数据(textual data)格式,主要用于Web和移动应用程序中.JSON 使用“键/值对”(Key:Value pair)存储数据,能够表示嵌套键值对 ...

  8. 通过AngularJS实现前端与后台的数据对接(一)——预备工作篇

    最近,笔者在做一个项目:使用AngularJS,从而实现前端与后台的数据对接.笔者这是第一次做前端与后台的数据对接的工作,因此遇到了许多问题.笔者在这些问题中,总结了一些如何实现前端与后台的数据对接的 ...

  9. 利用Python进行数据分析(2) 尝试处理一份JSON数据并生成条形图

    一.JSON 数据准备 首先准备一份 JSON 数据,这份数据共有 3560 条内容,每条内容结构如下: 本示例主要是以 tz(timezone 时区) 这一字段的值,分析这份数据里时区的分布情况. ...

  10. Salesforce Apex 使用JSON数据的示例程序

    本文介绍了一个在Salesforce Apex中使用JSON数据的示例程序, 该示例程序由以下几部分组成: 1) Album.cls, 定了了封装相关字段的数据Model类 2) RestClient ...

随机推荐

  1. CSS & JS Effect – Virtual Scrolling

    前言 我正在写 Angular CDK Scrolling 教程,它里面有一个 Virtual Scrolling 功能.借此机会,我想顺便写一篇纯 Sass & TS 的版本作为学习. Vi ...

  2. Azure – DNS

    前言 以往 DNS 都是用 Domain 公司免费提供的. 但这类 DNS 一般都不支持 API 访问. 这就会导致无法自动 renew Let's Encrypt wildcard SSL. 所以用 ...

  3. Nuxt Kit 中的上下文处理

    title: Nuxt Kit 中的上下文处理 date: 2024/9/16 updated: 2024/9/16 author: cmdragon excerpt: Nuxt Kit 提供的上下文 ...

  4. PHP命令执行与绕过

    一.eval()函数调用--无严格过滤: 1.highlight_file()高亮显示: ?c=highlight_file(base64_decode("ZmxhZy5waHA=" ...

  5. Task2 - IDA学习【进度 - 第二课】

    学习目标: - 无名侠的课,看二进制培训(第二集和第三集)(https://space.bilibili.com/7761039/video) - 会反汇编 - 会字符串搜索(f12) - 会简单异或 ...

  6. 运输小猫娘之再续 5k 传奇之寻找人道主义素数

    原文 前情提要 本章主角 5k_sync_closer 第一章 从再续前缘到苦心寻找满足最优条件的人道主义美丽素数 上回书说到,5k 因为拯救大家被炸断了 \(1000000007\) 米中的十五千米 ...

  7. 简化版本的redis配置文件

    # bind 192.168.1.100 10.0.0.1 # bind 127.0.0.1 ::1 #bind 127.0.0.1 protected-mode no port 6379 tcp-b ...

  8. nodejs 和 npm 版本对应关系

    一.nodejs 和 npm 的版本是有适配的 首先看下官网列明的大概匹配关系: 官网链接地址:https://nodejs.org/zh-cn/about/previous-releases 可以查 ...

  9. .NET高级调试 - 3.7对象检查

    简介 在大多数调试会话中,首先需要检查的项目就是分析应用程序的状态.在确认程序的问题是某种无效状态造成的,我们便需要分析程序是如何变成无效状态的.那么在分析过程中,需要为我们深入了解对象的各种审查方法 ...

  10. node.js安装及环境配置基于Windows系统

    node.js安装及环境配置-Windows系统 1. 下载安装包 https://nodejs.org/zh-cn/download/ 根据自己电脑系统及位数选择,我的电脑是Windows系统.64 ...