后端一般要求的传递方式:get 和 post
1.传递的为普通参数-对象形式(使用get)
api的js文件中:
// 删除 export function delFormData(param) { return request({ url: "/xxx/xxxx/delFormData", method: "get", params: { ids: param.ids, tableName: param.tableName, userId: param.userId } }); }后端的swagger中:
??vue文件中:
import { delFormData,} from "@/api/xxx/formApi";在删除按钮的点击事件deleteFiles()处,可进行多个的删除。?
// 删除文件 deleteFiles() { if (this.multipleSelection.length > 0) { this.$confirm("确定删除?", "提示", { confirmButtonText: "确定", cancelButtonText: "取消", type: "warning" }).then(() => { let idArr = []; // 遍历勾选内容 this.multipleSelection.forEach(item => { idArr.push(item.序号); }); let param = { ids: idArr.join(","), tableName: this.$route.query.md5num, userId: 4 }; delFormData(param).then(res => { if (res) { this.$message.success("删除成功"); this.refreshData(); } else { this.$message.warning("请稍后再试"); } }); });2.传递的为formData表单形式
api的js文件中:
export function rulesPage(param) { return request({ url: "/xxxx/xxx/selectPage", method: "post", data: param }); }后端swagger中:
vue文件中:
import { rulesPage } from "@/api/xxx/rules";?vue文件中获取表数据接口对接,将接口写在获取表数据的方法listRuleChange()下,将所传递参数拼接为表单形式。
// 获取规则数据 async listRuleChange() { this.rulesTableLoading = true; // 获取列数据-表单形式 let tablename = this.$route.query.md5num; let form = new FormData(); form.append("current", this.ruleCurrentPage); form.append("size", this.rulePageSize); form.append("tableName", tablename); let pageResult = await rulesPage(form); this.rulesTableLoading = false; this.ruleCurrentPage = 1; if (pageResult.data.data) { this.ruleCurrentPage = 1; this.ruleTotal = pageResult.data.count; this.rulesData = pageResult.data.data; } },3.传递的为json形式
api的js文件中:
// 增加 export function rulesInsert(param) { return request({ url: "/xxxx/xxxx/insert", method: "post", headers: { "Content-Type": "application/json" // 如果写成contentType会报错 }, data: param }); }后端的swagger中:
?vue文件中:
import { rulesInsert } from "@/api/xxx/rules";?点击增加按钮,输入名称,在复选框中选择,将输入的名称和复选框中选择所对应的名称传递,传递方式为json形式。在确认按钮点击事件confirmDataInfo()处写接口,selArr为多选框的v-model,即被选择的多选框。此处采用join(‘’)方法可实现数组重组为字符串。
confirmDataInfo() { // 将数组重组为字符串,并以 , 进行分割 let notnulls = this.selArr.join(","); // 整理参数 let param = { name: this.nameValue, notNull: notnulls, tableName: this.tableName }; rulesInsert(param).then(res => { if (res.data.code == 200) { this.$message.success("规则增加成功"); this.dialogVisible = false; } else { this.$message.error("规则增加失败"); } }); // 刷新页面 this.$emit("refreshRulesData"); }4.传递的为数组对象形式
api的js文件中:
// 授权 ==> 授权指定用户可以访问 export function specifyUser(param) { return request({ url: "/xxxxx/specifyUser", method: "post", headers: { "Content-Type": "application/json" // 如果写成contentType会报错 }, data: param }); }后端的swagger中:(要求返回的参数为数组对象形式)
??vue文件中:
import specifyUser from "@/xxx/xxxx/xxxx";页面中可多选多条数据,同时授权给多个用户。要求传递的是数据的id和用户的id,使用双重循环可实现。
在确定按钮的方法处拼接参数和调用接口,confirmBatchAuth为确定按钮的方法,isAuth,groupIds为该方法从别的文件传递过来的参数,isAuth=1时为指定用户授权,groupIds为选中的用户id。multipleSelection为页面存放被选中数据的数组,对用户数组和数据数组进行双层遍历,将其以对象的形式写入数组。
confirmBatchAuth(isAuth, groupIds) { let newArr = []; // 指定用户授权存放 this.multipleSelection.forEach((item) => { groupIds.forEach((ite) => { let obj = { cameraIndexCode: item.cameraIndexCode, userId: ite, }; newArr.push(obj); }); }); // 授权指定用户访问--指定用户为isAuth==1 if (isAuth == 1) { specifyUser(newArr).then((res) => { if (res.status == 200) { this.$message.success("授权成功"); } else { this.$message.warning("授权失败"); } }); } },5.传递一个参数拼接在url中 (一)
api的js文件中:
在js文件中url需拼接参数,一个的情况下可直接将参数写在接口名后的括号中
export function removeById(id) { return request({ url: `/xxxx/xxxxx/removeById/${id}`, method: "get" }); }?后端的swagger:
?vue文件中:
删除按钮:
删除按钮在table那一列,该列的数据信息通过slot-scope使用row可获取
<el-table-column prop="operate" label="操作"> <template slot-scope="scope"> <el-popconfirm class="del-btn" title="确定删除吗?" @confirm="delData(scope.row)"> <el-button slot="reference" type="text" size="small">删除</el-button> </el-popconfirm> </template></el-table-column >可直接将传递的参数写在接口名后的括号中
// 删除 delData(row) { removeById(row.id).then((res) => { if (res.data.code == 200) { this.$message.success('删除成功') this.xxxx() // 刷新页面的方法 } else { this.$message.warning('请稍后再试') } }) },6.传递2个参数拼接在url中 (二):一般为分页查询
api的js文件中:
export function selectPage(param) { return request({ url: `/xxxxx/xxxxxs/selectPage/${param.current}/${param.size}`, method: "get" }); }?后端的swagger:
vue文件中:
template中的分页按钮:
<div class="pagination"> <el-pagination style="margin-bottom: 10px" background :current-page="currentPage" @current-change="handleCurrentChange" @size-change="handleSizeChange" :page-sizes="[20, 50, 100]" :page-size="pageSize" :total="total" layout="total, sizes, prev, pager, next, jumper" > </el-pagination> </div>?data中:
currentPage: 1, pageSize: 20, total: 0,mounted中:加载页面时即加载分页查询的数据
mounted() { this.getData() },?methods中:
// 底部分页-当前页 handleCurrentChange(val) { this.currentPage = val this.getData() }, // 底部分页-数目切换 handleSizeChange(val) { this.pageSize = val this.currentPage = 1 this.getData() }, // 获取分页查询数据 getData() { let param = { current: this.currentPage, size: this.pageSize } selectPage(param).then((res) => { if (res.data.code == 200) { this.tableData = res.data.data this.total = res.data.count } }) },7.传递多个参数拼接在url中 (三)
api的js文件中:
在js文件中url需拼接参数,具体拼接方法根据swagger后端调试的F12中确定
// 分页查询 export function historySelectPage(param) { return request({ url: `/xxxxx/xxxx/selectPage/${param.current}/${param.size}/?tableName=${param.tableName}`, method: "get" }); }本次接口后端swagger的F12中显示:
?后端的swagger:
???vue文件中:普通的传参为对象形式的接口对接
// 获取 beforeHistory() { let param = { current: this.currentPage, size: this.pageSize, tableName: this.tableName }; historySelectPage(param).then(res => { if (res.data.data) { this.tableData = res.data.data; this.total = res.data.count; } }); },
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。 |
标签: #vue接口调用传值 #后端一般要求的传递方式get #和