本节主要是前后端接口的调用,以及前端如何进行封装接口

一、创建相关文件

在文件夹下创建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请求的更多相关文章

  1. 学习版pytest内核测试平台开发万字长文入门篇

    前言 2021年,测试平台如雨后春笋般冒了出来,我就是其中一员,写了一款pytest内核测试平台,在公司落地.分享出来后,有同学觉得挺不错,希望能开源,本着"公司代码不要传到网上去,以免引起 ...

  2. 技术分享 | 一步一步学测试平台开发-Vue restful请求

    本文节选自霍格沃兹测试学院内部教材 一般在构建应用时需要访问后端的 API 接口获取后端数据并展示.做这件事的方法有很多种(比如 axios,vue-resource,fetch-jsonp),使用 ...

  3. 自动化测试平台(Vue前端框架安装配置)

    Vue简介: 通俗的来说Vue是前端框架,用来写html的框架,可轻量级也可不轻量级 Vue特性: 绑定性,响应性,实时性,组件性 安装软件以及控件: 控件库:element-ui node.js ( ...

  4. EIP权限工作流平台总结-2前端框架

      1.预览地址:www.eipflow.com (1) 权限工作流:www.demo.eipflow.com/Account/Login (2) 基础权限版:www.auth.eipflow.com ...

  5. (转)2018几大主流的UI/JS框架——前端框架 [Vue.js(目前市场上的主流)]

    https://blog.csdn.net/hu_belif/article/details/81258961 2016年开始应该是互联网飞速发展的几年,同时也是Web前端开发非常火爆的一年,Web ...

  6. 关于使用jqmobi前端框架在phonegap平台上开发时的日期时间选择控件

    jqmobi(appframework)作为Intel的一款html5移动前端框架,以其自身轻量级和容易上手获得了很多移动HTML5开发者的喜爱,相对于jquerymobile,它可以说将jQuery ...

  7. APICloud APP前端框架——手机APP开发、APP制作、APP定制平台

    概述 APICloud前端框架,包括api.js和api.css.api.css处理不同平台浏览器的默认样式.api.js是一个JavaScript库.是APICloud为混合移动开发定制的轻量Jav ...

  8. 【招聘】.NET高级开发、前端高级开发、测试工程师

    .NET架构师 工作地点:厦门-湖里区 工作年限:5年及以上 学历要求:大专或以上 工资范围:15000元 - 25000元 福利待遇:五险一金,带薪年休假,年度旅游,丰富的员工团队活动:生日会.中秋 ...

  9. Mock平台3-初识Antd React 开箱即用中台前端框架

    微信搜索[大奇测试开],关注这个坚持分享测试开发干货的家伙. 内容提要 首先说下为啥这次测试开发系列教程前端选择Antd React,其实也是纠结对比过最终决定挑战一把,想法大概有几下几点: 笔者自己 ...

  10. Meteor全栈开发平台 - 不仅仅是前端

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博客地址为http://www.cnblogs.com/jasonnode/ .网站上有对应每一 ...

随机推荐

  1. 【简单总结】SLAM 算法的 Benchmark 及相关数据集的结果对比

    前言与参考 主要是copy一下总结,方便自己后续找方案特定使用,所有的出处均在标题处和原链接跳转,此处仅做各个benchmark收集使用,如果有原作者觉得侵权,请联系我 将全力配合相关内容和链接删除 ...

  2. 动环监控方案,为什么推荐79元全志T113-i国产平台?

    什么是动环监控系统? 通信电源及机房环境监控系统(简称"动环监控系统"),是对分布在各机房的电源柜.UPS.空调.蓄电池等多种动力设备,及门磁.红外.窗破.水浸.温湿度.烟感等机房 ...

  3. podman安装mysql容器

    前言 mysql如果正式安装,卸载起来比较麻烦.如果是自己测试用的话,可以用podman拉取一个镜像来使用. 这里使用的是mysql5.7版本,对应的docker镜像是mysql:5.7 (如果拉取较 ...

  4. Java核心基础之数据类型

    Java内置数据类型 计算机基础知识 bit 位 ,即0或者1, 0101010110 byte字节,8位作为⼀个字节,字节是处理数据的基本单位 1 byte = 8bits 1KB = 1024 b ...

  5. Peaks:每周至少要进行一次用户访谈?

    名字:Peaks 开发者 / 团队:Vogelhaus Apps GmbH 平台:iOS.watchOS 请简要介绍下这款产品 每个人生活的节奏都有一个内置的生理时钟,这就是所谓的昼夜节律.它不仅控制 ...

  6. 全网最适合入门的面向对象编程教程:10 类和对象的 Python 实现-类的继承和里氏替换原则,Python 模拟主机和传感器自定义类

    全网最适合入门的面向对象编程教程:10 类和对象的 Python 实现-类的继承和里氏替换原则,Python 模拟主机和传感器自定义类 摘要: 本文主要介绍了类的继承的基本概念和里氏替换原则,以模拟传 ...

  7. 内部网关协议RIP

    RIP协议的特点:仅和相邻路由器交换信息:交换自己现在的路由表:按固定的时间周期. 对每一个相邻路由器发送的RIP报文,执行以下步骤: 1.对地址为x的相邻路由器发来的报文,修改此报文中的所有项目,把 ...

  8. [oeasy]python0118_语言的发展_希腊字符_拼音文字_亚历山大大帝

    希腊字符回忆上次内容 尼罗河流域 的 埃及圣书体 是象形文字 两河流域 的 苏美尔楔形文字 不是象形文字 做生意的 腓尼基人 利用 埃及圣书体 的 字型 苏美尔楔形文字 的 写法 构造出 腓尼基字符 ...

  9. NIO的三大核心组件详解,充分说明为什么NIO在网络IO中拥有高性能!

    一.写在开头 我们在上一篇博文中提到了Java IO中常见得三大模型(BIO,NIO,AIO),其中NIO是我们在日常开发中使用比较多的一种IO模型,我们今天就一起来详细的学习一下. 在传统的IO中, ...

  10. php 选择驱动写法

    在 ThinkPHP 5.1 中,若要根据配置文件 sms.conf 中的设置在不同的短信渠道之间进行切换,可以采用以下步骤: 第一步:定义接口 首先,创建一个接口,这个接口将由所有短信渠道类实现.这 ...