【测试平台开发】——07Vue前端框架实战——restful请求
本节主要是前后端接口的调用,以及前端如何进行封装接口
一、创建相关文件
在文件夹下创建http.js、api.js、user.js

1)http.js封装接口:
在src下创建api文件夹
添加http.js文件
创建一个通用的aixos实例
设置baseURL,headers
import axios from 'axios'
var instance = axios.create({
headers: {
'Content-Type': 'application/json'
},
baseURL:'http://xxx.xxxx.com:8089/'
}) export default instance
2)user.js
创建接口,引用http.js文件
import axios from './http' // 定义常量
const user = {
//创建登录接口
signIn(){ }} export default user
3)api.js
把每个界面的接口都统一封装一个js里
import user from "./user"
const api = {
user
}
export default api
二、挂载
1)main.js
把api挂载到这里,通过引用vue,就可以引用api里面的接口
import Vue from 'vue'
import './plugins/axios'
import App from './App.vue'
import router from './router'
import store from './store'
import vuetify from './plugins/vuetify'
import api from './api/api.js' Vue.config.productionTip = false
Vue.prototype.$api = api new Vue({
router,
store,
vuetify,
render: h => h(App)
}).$mount('#app')
三、接口文档--登录、注册
1)登录接口

通过接口文档,完善user.js接口:
import axios from './http' // 定义常量
const user = {
//登录接口
signIn(params){
return axios.post('/user/login',params)
}
//
} export default user
2)注册接口

import axios from './http' // 定义常量
const user = {
//登录接口
signIn(params){
return axios.post('/user/login',params)
},
//注册接口
signUp(params){
return axios.post('/user/register',params)
}
} export default user
四、前端调用后端接口
1)创建SingUp.vue文件

vue文件三部分模板
// html部分
<template>
<div>
注册
</div>
</template> // JS部分
<script>
export default { }
</script> // CSS部分
<style lang="stylus" scoped> </style>
2)设置路由
import Vue from 'vue'
import VueRouter from 'vue-router'
import SignIn from '../components/SignIn.vue'
import SignUp from '../components/SignUp.vue' Vue.use(VueRouter) const routes = [
{
path: '/',
name: 'SignIn',
component: SignIn
},
{
path: '/',
name: 'SignUp',
component: SignUp
}
] const router = new VueRouter({
routes
}) export default router
3)登录界面跳转注册页面
登录界面的【注册】按钮定义方法,并且在js方法中添加跳转方法,红色标注
// Html部分
<template>
<div class="login-form">
<h1>登录</h1>
<v-col cols="12">
<v-text-field
v-model="username"
name = 'input-10-0'
label="用户名"
placeholder="请输入用户名"
outlined
:rules="[rules.required, rules.nameMin]"
hint="至少8个字符"
counter
></v-text-field>
</v-col> <v-col cols="12">
<v-text-field
v-model="password"
:append-icon="show1 ? 'mdi-eye' : 'mdi-eye-off'"
:rules="[rules.required, rules.pwdMin]"
:type="show1 ? 'text' : 'password'"
name="input-10-1"
label="密码"
placeholder="请输入密码"
hint="至少6个字符"
outlined
counter
@click:append="show1 = !show1"
></v-text-field>
</v-col> <v-btn depressed color="primary" elevation="12" large>立即登录</v-btn>
<v-btn class="btn2" depressed color="primary" elevation="12" large @click="singUp()">立即注册</v-btn>
</div>
</template> // JS部分
<script>
export default {
data () {
return {
show1: false,
show2: false,
show3: false,
show4: false,
username: '',
password: '',
rules: {
required: value => !!value || '不能为空',
nameMin: v => v.length >= 8 || '至少8个字符',
pwdMin: v => v.length >= 6 || '至少6个字符',
emailMatch: () => (`The email and password you entered don't match`),
},
}
},
methods:{
singUp(){
this.$router.push({name: 'SignUp'})
}
}
}
</script> // CSS部分
<style scoped>
.login-form{
width: 500px;
margin: 0 auto;
text-align: center;
margin-top: 100px;
}
.btn2{
margin-left: 30px;
}
</style>
跳转效果:

4)完善注册页面
接口文档里面注册接口需要:邮箱、用户名、密码
页面构建跟登录页面差不多,就直接上代码了,包括返回按钮跳转登录页面
// html
<template>
<div class="logon-form">
<h1>注册</h1> <v-col cols="12">
<v-text-field
v-model="username"
name = 'input-10-0'
label="用户名"
placeholder="请输入用户名"
outlined
:rules="[rules.required, rules.nameMin, rules.inputMax]"
hint="至少8个字符,最多20个字符"
counter
></v-text-field>
</v-col> <v-col cols="12">
<v-text-field
v-model="password"
:append-icon="show1 ? 'mdi-eye' : 'mdi-eye-off'"
:rules="[rules.required, rules.pwdMin, rules.inputMax]"
:type="show1 ? 'text' : 'password'"
name="input-10-1"
label="密码"
placeholder="请输入密码"
hint="至少6个字符,最多20个字符"
outlined
counter
@click:append="show1 = !show1"
></v-text-field>
</v-col> <v-col cols="12">
<v-text-field
v-model="email"
name = 'input-10-2'
label="邮箱"
placeholder="请输入邮箱"
outlined
:rules="[rules.required, rules.inputMax]"
hint="最多20个字符"
counter
></v-text-field>
</v-col> <v-btn class="style-btn" depressed color="primary" elevation="12" large>注册</v-btn>
<v-btn class="back-btn style-btn" depressed color="primary" elevation="12" large @click="back()">返回</v-btn>
</div>
</template> // JS
<script>
export default {
data () {
return {
show1: false,
show2: false,
show3: false,
show4: false,
username: '',
password: '',
email: '',
rules: {
required: value => !!value || '不能为空',
nameMin: v => v.length >= 8 || '至少8个字符',
pwdMin: v => v.length >= 6 || '至少6个字符',
inputMax: v => v.length <= 20 || '最多20个字符',
emailMatch: () => (`The email and password you entered don't match`),
},
}
},
methods:{
back(){
this.$router.push({name: 'SignIn'})
}
}
}
</script> // CSS
<style lang="stylus" scoped>
.logon-form{
width: 500px;
margin: 0 auto;
text-align: center;
margin-top: 100px;
}
.back-btn{
margin-left: 30px;
}
.style-btn{
width: 100px;
}
</style>
展示效果:

5)前端调用注册接口
// html
<template>
<div class="logon-form">
<h1>注册</h1>
。。。。。。省略 <v-btn class="style-btn" depressed color="primary" elevation="12" large @click="register()">注册</v-btn>
<v-btn class="back-btn style-btn" depressed color="primary" elevation="12" large @click="back()">返回登录</v-btn>
</div>
</template> // JS
<script>
export default {
data () {
return {
。。。。。。省略
},
}
},
methods:{
back(){
this.$router.push({name: 'SignIn'})
},
register(){
let post_data = {
username : this.username,
password : this.password,
email : this.email
}
this.$api.user.signUp(post_data).then(res=>{
console.log(res)
})
}
},
}
</script>
</style>
页面填写值,点击【注册】按钮

解析:
register方法有两部分组成。
1、传递参数
let post_data = {
username : this.username,
password : this.password,
email : this.email
}
2、调取接口
this.$api.user.signUp(post_data).then(res=>{
console.log(res)
})
6)调用登录接口
点击【登录】按钮,调取登录接口
// Html部分
<template>
<div class="login-form">
<h1>登录</h1>
<v-col cols="12">
<v-text-field
v-model="username"
name = 'input-10-0'
label="用户名"
placeholder="请输入用户名"
outlined
:rules="[rules.required, rules.nameMin, rules.inputMax]"
hint="至少8个字符,最多20字符"
counter
></v-text-field>
</v-col> <v-col cols="12">
<v-text-field
v-model="password"
:append-icon="show1 ? 'mdi-eye' : 'mdi-eye-off'"
:rules="[rules.required, rules.pwdMin, rules.inputMax]"
:type="show1 ? 'text' : 'password'"
name="input-10-1"
label="密码"
placeholder="请输入密码"
hint="至少6个字符,最多20字符"
outlined
counter
@click:append="show1 = !show1"
></v-text-field>
</v-col> <v-btn class="style-btn" depressed color="primary" elevation="12" large @click="login()">立即登录</v-btn>
<v-btn class="logon-btn style-btn" depressed color="primary" elevation="12" large @click="singUp()">立即注册</v-btn>
</div>
</template> // JS部分
<script>
export default {
data () {
return {
show1: false,
show2: false,
show3: false,
show4: false,
username: '',
password: '',
rules: {
required: value => !!value || '不能为空',
nameMin: v => v.length >= 8 || '至少8个字符',
pwdMin: v => v.length >= 6 || '至少6个字符',
inputMax: v => v.length <= 20 || '最多20个字符',
emailMatch: () => (`The email and password you entered don't match`),
},
}
},
methods:{
singUp(){
this.$router.push({name: 'SignUp'})
},
login(){
let post_data = {
username : this.username,
password : this.password
}
this.$api.user.signIn(post_data).then(res=>{
console.log(res)
})
}
},
}
</script> // CSS部分
<style scoped>
.login-form{
width: 500px;
margin: 0 auto;
text-align: center;
margin-top: 100px;
}
.logon-btn{
margin-left: 30px;
}
.style-btn{
width: 100px;
}
</style>
内容与注册同理

【测试平台开发】——07Vue前端框架实战——restful请求的更多相关文章
- 学习版pytest内核测试平台开发万字长文入门篇
前言 2021年,测试平台如雨后春笋般冒了出来,我就是其中一员,写了一款pytest内核测试平台,在公司落地.分享出来后,有同学觉得挺不错,希望能开源,本着"公司代码不要传到网上去,以免引起 ...
- 技术分享 | 一步一步学测试平台开发-Vue restful请求
本文节选自霍格沃兹测试学院内部教材 一般在构建应用时需要访问后端的 API 接口获取后端数据并展示.做这件事的方法有很多种(比如 axios,vue-resource,fetch-jsonp),使用 ...
- 自动化测试平台(Vue前端框架安装配置)
Vue简介: 通俗的来说Vue是前端框架,用来写html的框架,可轻量级也可不轻量级 Vue特性: 绑定性,响应性,实时性,组件性 安装软件以及控件: 控件库:element-ui node.js ( ...
- EIP权限工作流平台总结-2前端框架
1.预览地址:www.eipflow.com (1) 权限工作流:www.demo.eipflow.com/Account/Login (2) 基础权限版:www.auth.eipflow.com ...
- (转)2018几大主流的UI/JS框架——前端框架 [Vue.js(目前市场上的主流)]
https://blog.csdn.net/hu_belif/article/details/81258961 2016年开始应该是互联网飞速发展的几年,同时也是Web前端开发非常火爆的一年,Web ...
- 关于使用jqmobi前端框架在phonegap平台上开发时的日期时间选择控件
jqmobi(appframework)作为Intel的一款html5移动前端框架,以其自身轻量级和容易上手获得了很多移动HTML5开发者的喜爱,相对于jquerymobile,它可以说将jQuery ...
- APICloud APP前端框架——手机APP开发、APP制作、APP定制平台
概述 APICloud前端框架,包括api.js和api.css.api.css处理不同平台浏览器的默认样式.api.js是一个JavaScript库.是APICloud为混合移动开发定制的轻量Jav ...
- 【招聘】.NET高级开发、前端高级开发、测试工程师
.NET架构师 工作地点:厦门-湖里区 工作年限:5年及以上 学历要求:大专或以上 工资范围:15000元 - 25000元 福利待遇:五险一金,带薪年休假,年度旅游,丰富的员工团队活动:生日会.中秋 ...
- Mock平台3-初识Antd React 开箱即用中台前端框架
微信搜索[大奇测试开],关注这个坚持分享测试开发干货的家伙. 内容提要 首先说下为啥这次测试开发系列教程前端选择Antd React,其实也是纠结对比过最终决定挑战一把,想法大概有几下几点: 笔者自己 ...
- Meteor全栈开发平台 - 不仅仅是前端
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博客地址为http://www.cnblogs.com/jasonnode/ .网站上有对应每一 ...
随机推荐
- 【简单总结】SLAM 算法的 Benchmark 及相关数据集的结果对比
前言与参考 主要是copy一下总结,方便自己后续找方案特定使用,所有的出处均在标题处和原链接跳转,此处仅做各个benchmark收集使用,如果有原作者觉得侵权,请联系我 将全力配合相关内容和链接删除 ...
- 动环监控方案,为什么推荐79元全志T113-i国产平台?
什么是动环监控系统? 通信电源及机房环境监控系统(简称"动环监控系统"),是对分布在各机房的电源柜.UPS.空调.蓄电池等多种动力设备,及门磁.红外.窗破.水浸.温湿度.烟感等机房 ...
- podman安装mysql容器
前言 mysql如果正式安装,卸载起来比较麻烦.如果是自己测试用的话,可以用podman拉取一个镜像来使用. 这里使用的是mysql5.7版本,对应的docker镜像是mysql:5.7 (如果拉取较 ...
- Java核心基础之数据类型
Java内置数据类型 计算机基础知识 bit 位 ,即0或者1, 0101010110 byte字节,8位作为⼀个字节,字节是处理数据的基本单位 1 byte = 8bits 1KB = 1024 b ...
- Peaks:每周至少要进行一次用户访谈?
名字:Peaks 开发者 / 团队:Vogelhaus Apps GmbH 平台:iOS.watchOS 请简要介绍下这款产品 每个人生活的节奏都有一个内置的生理时钟,这就是所谓的昼夜节律.它不仅控制 ...
- 全网最适合入门的面向对象编程教程:10 类和对象的 Python 实现-类的继承和里氏替换原则,Python 模拟主机和传感器自定义类
全网最适合入门的面向对象编程教程:10 类和对象的 Python 实现-类的继承和里氏替换原则,Python 模拟主机和传感器自定义类 摘要: 本文主要介绍了类的继承的基本概念和里氏替换原则,以模拟传 ...
- 内部网关协议RIP
RIP协议的特点:仅和相邻路由器交换信息:交换自己现在的路由表:按固定的时间周期. 对每一个相邻路由器发送的RIP报文,执行以下步骤: 1.对地址为x的相邻路由器发来的报文,修改此报文中的所有项目,把 ...
- [oeasy]python0118_语言的发展_希腊字符_拼音文字_亚历山大大帝
希腊字符回忆上次内容 尼罗河流域 的 埃及圣书体 是象形文字 两河流域 的 苏美尔楔形文字 不是象形文字 做生意的 腓尼基人 利用 埃及圣书体 的 字型 苏美尔楔形文字 的 写法 构造出 腓尼基字符 ...
- NIO的三大核心组件详解,充分说明为什么NIO在网络IO中拥有高性能!
一.写在开头 我们在上一篇博文中提到了Java IO中常见得三大模型(BIO,NIO,AIO),其中NIO是我们在日常开发中使用比较多的一种IO模型,我们今天就一起来详细的学习一下. 在传统的IO中, ...
- php 选择驱动写法
在 ThinkPHP 5.1 中,若要根据配置文件 sms.conf 中的设置在不同的短信渠道之间进行切换,可以采用以下步骤: 第一步:定义接口 首先,创建一个接口,这个接口将由所有短信渠道类实现.这 ...