首页 > 编程语言 >7天毕设速成9小程序接口封装及对接

7天毕设速成9小程序接口封装及对接

时间:2024-10-09 16:21:10浏览次数:11  
标签:url res 程序接口 跳转 速成 天毕设 uni data 页面

1.接口封装

1.1.请求接口封装

新建文件夹request,新建index.js,封装接口

接口调用对应此系列,springboot后端搭建笔记https://blog.csdn.net/PoofeeDong/article/details/140695913

代码如下:

const commoneUrl = "http://locahost:9999";//对应前面接口

//get请求封装
function getRequest(url, data) {
  var promise = new Promise((resolve, reject) => {
    var postData = data;
    uni.request({
      url:"api"+ url,
      data: postData,
      method: "GET",
      dataType: 'json',
      header: {
        'content-type': 'application/json',
        token: uni.getStorageSync('token') || ''
      },
      success: function(res) {
        if (res.statusCode === 200) {
          resolve(res.data);
        } else {
          resolve(res.data)
        }
      },
      error: function(e) {
        reject('网络出错');
      }
    });
  });
  return promise;
}
//post请求封装
function postRequest(url, data) {
  var promise = new Promise((resolve, reject) => {
    var postData = data;
    uni.request({
      url:"api"+ url,
      data: postData,
      method: 'POST',
      header: {
        'content-type': 'application/json',
        token: uni.getStorageSync('token') || ''
      },
      success: function(res) {
        if (res.code === 200 && res.code == 0) {
          resolve(res.data);
        } else {
          resolve(res.data)
        }
      },
      error: function(e) {
        reject('网络出错');
      }
    })
  });
  return promise;
}
module.exports = {
  postRequest,
  getRequest
}

1.2.登录注册接口封装

新建api.js

代码如下

// 导入上面封装的请求
const request = require('./index.js') 

// 登录
var userLogin = function(data){
  return request.postRequest('/api/bishe/sysuser/login',data);   
}

// 注册
var userRegist = function(data){
  return request.postRequest('/api/bishe/sysuser/save',data);   
}

// 导出所有的请求方法
module.exports = {
  userLogin,
  userRegist
}

在这里浏览器访问遇到了跨域

更改manifest.json文件配置

// h5 解决跨域问题
	"h5": {
	    "devServer": {
	        "port": 8080,
	        "proxy": {
	            "/api": {
	                "target": "http://localhost:9999",
	                "changeOrigin": true,
	                "pathRewrite": {
	                    "^/api": ""
	                }
	            }
	        }
	    }
	}

2.登录接口对接

完整源码

<template>
	<view class="container">
		<view class="logo">
			<view>
				<image class="logoitem" src="../../static/images/logo.jpg"
				 mode=""></image>
			</view>
			<view class="logo-text">欢迎登录XXX系统</view>
			
		</view>
		<view class="login_item">
			<u-tabs :list="list" :is-scroll="false" :current="current" @change="change">
			</u-tabs>
			<view class="login margin-b80" v-if="!current">
				<view class="input vs-row vs-align-center margin-b40">
					<image class="input-icon margin-r20" src="../../static/images/用户.png"
					 mode=""></image>
					<input class="vs-flex-item color-base font-30" type="text" value="" :maxlength="11" placeholder="请输入您的手机号/邮箱"
					 placeholder-class="input-placeholder"  v-model="login.username"/>
				</view>
				<view class="input vs-row vs-align-center margin-b40">
					<image class="input-icon margin-r20" src="../../static/images/password.png"
					 mode=""></image>
					<input class="vs-flex-item color-base font-30" type="text" password value="" placeholder="请输入您的登录密码"
					 placeholder-class="input-placeholder"  v-model="login.password"/>
				</view>
				<view class="button bg-color-base vs-row vs-align-center vs-space-center margin-b40" @click="tologin()">
					<text class="color-white font-34">立即登录</text>
				</view>
			</view>
			
			<view class="register margin-b80" v-if="current">
				<view class="input vs-row vs-align-center margin-b40">
					<image class="input-icon margin-r20" src="../../static/images/用户.png"
					 mode=""></image>
					<input class="vs-flex-item color-base font-30" type="text" value="" :maxlength="11" placeholder="请输入您的手机号/邮箱"
					 placeholder-class="input-placeholder" />
				</view>
				<view class="input vs-row vs-align-center margin-b40">
					<image class="input-icon margin-r20" src="../../static/images/password.png"
					 mode=""></image>
					<input class="vs-flex-item color-base font-30" type="text" password value="" placeholder="请输入您的登录密码"
					 placeholder-class="input-placeholder" />
				</view>
				<view class="input vs-row vs-align-center margin-b40">
					<image class="input-icon margin-r20" src="../../static/images/password.png"
					 mode=""></image>
					<input class="vs-flex-item color-base font-30" type="text" password value="" placeholder="请再次输入您的登录密码"
					 placeholder-class="input-placeholder" />
				</view>
				<view class="button bg-color-base vs-row vs-align-center vs-space-center margin-b80">
					<text class="color-white font-34">立即注册</text>
				</view>
				
			</view>
			
			<!-- <view class="vs-row vs-align-center vs-space-center margin-b100">
				<text class="color-base font-28">忘记密码?</text>
			</view> -->
			
		</view>
	</view>
</template>

<script>
	import {userLogin} from '@/request/api.js'
	import {userRegist} from '@/request/api.js'
	export default {
		data() {
			return {
				list: [{
					name: '登录'
				}, {
					name: '注册'
				}],
				current: 0,
				login:{
					username:'',
					password:""
				},
				regist:{
					username:'',
					password:"",
					repassword:''
				}
			}
		},
		methods: {
			change(index) {
				this.current = index;
			},
			tologin(){
				userLogin(this.login).then(res=>{
					if(res.code==200){
						uni.setStorageSync('token', res.data.username);
						uni.switchTab({
						  url: '../index/index' // 跳转到对应路径的页面
						});
					}
				  console.log('用户信息',res);
				 
				})
			}
		}
	}
</script>

<style lang="scss">
	page{
		background-color:#5064eb;
	}
	.container{padding: 300rpx 30rpx 0 30rpx;}
	.login_item{
		background-color: #ffffff;
		border-radius: 20rpx;
		padding: 30rpx;
		position: relative;
		left: 50%;
		transform: translate(-50%,-50%);
	}
	.login,
	.register {
		padding: 0 60rpx;
	}
	
	.logoitem{
		border-radius: 50%;
		width: 100px;
		height: 100px;
	}
	
	.logo{
		margin-top: -110px;
		margin-bottom: 100px;
		height: 230px;
		text-align: center;
	}
	
	.logo-text{
		color: #ffffff;
		font-size: 19px;
		margin-top: 10px;
	}
	
</style>

3.效果展示

4.附录:uniapp页面跳转方式

1. uni.navigateTo:


用法:uni.navigateTo({ url: '目标页面路径' })

描述:保留当前页面,跳转到应用内的某个页面,使用uni.navigateBack可以返回到原页面。

示例:uni.navigateTo({ url: '/pages/detail/detail' })

2. uni.redirectTo:


用法:uni.redirectTo({ url: '目标页面路径' })

描述:关闭当前页面,跳转到应用内的某个页面。不可返回到原页面。

示例:uni.redirectTo({ url: '/pages/login/login' })

3. uni.reLaunch:


用法:uni.reLaunch({ url: '目标页面路径' })

描述:关闭所有页面,打开应用内的某个页面。适用于一些非常重要的页面,如应用启动页。

示例:uni.reLaunch({ url: '/pages/index/index' })

4. uni.switchTab:


用法:uni.switchTab({ url: '目标页面路径' })

描述:跳转到应用内的某个tabBar页面,关闭其他所有非tabBar页面。

示例:uni.switchTab({ url: '/pages/home/home' })

5. uni.navigateBack:

  • 用法:uni.navigateBack({ delta: 1 })

  • 描述:返回上一级页面。参数delta表示返回的层数,默认为1。

  • 示例:uni.navigateBack({ delta: 2 })

6.获取跳转页面的参数

navigateTo、redirectTo、reLaunch 的参数传递

  • 描述:通过 query 参数传递数据到目标页面。

  • 代码示例:

  • <template>
      <view>
        <button @click="passData">传递数据到新页面</button>
      </view>
    </template>
    
    <script>
    export default {
      methods: {
        passData() {
          uni.navigateTo({
            url: '/pages/newPage/newPage?param1=value1&param2=value2'
          });
        }
      }
    }
    </script>
    

    获取跳转页面的参数

  • 描述:在目标页面的 onLoad 钩子函数中通过 options 获取跳转时传递的参数。

  • 代码示例:

  • <template>
      <view>
        <text>参数1:{{ param1 }}</text>
        <text>参数2:{{ param2 }}</text>
      </view>
    </template>
    
    <script>
    export default {
      onl oad(options) {
        // 获取跳转时传递的参数
        this.param1 = options.param1 || '';
        this.param2 = options.param2 || '';
      },
      data() {
        return {
          param1: '',
          param2: ''
        };
      }
    }
    </script>
    

    7.其他跳转

1. uni.navigateToMiniProgram:

uni.navigateToMiniProgram 用于跳转到其他小程序。

uni.navigateToMiniProgram({
  appId: 'targetAppId',
  path: 'targetPath',
  extraData: {
    key: 'value'
  },
  success: function () {
    console.log('跳转成功');
  }
});

2. uni.redirectToMiniProgram:

uni.redirectToMiniProgram 用于关闭当前小程序,跳转到其他小程序。

uni.redirectToMiniProgram({
  appId: 'targetAppId',
  path: 'targetPath',
  extraData: {
    key: 'value'
  },
  success: function () {
    console.log('跳转成功');
  }
});

3. uni.navigateToNative:

uni.navigateToNative 用于跳转到原生页面。

uni.navigateToNative({
  pageName: 'targetPage',
  params: {
    key: 'value'
  }
});

标签:url,res,程序接口,跳转,速成,天毕设,uni,data,页面
From: https://blog.csdn.net/PoofeeDong/article/details/142788803

相关文章

  • 【MYSQL学习】10分钟速成!MySQL新手也能秒变高手?对比其他数据库,MySQL究竟牛在哪里?
    ......
  • 【MYSQL学习】10分钟速成!MySQL数据库基本概念全解密,新手也能秒变高手?
    ......
  • 速成html(一)
    只有6个标签可以放到<head><head\>里面,分别是title,meta,link,style,script,base.重点掌握这两个就差不多。title:定义页面开头,页面地址栏meta:定义特殊信息,关键字,name:属性取值(keywords:页面关键字,description:网页描述,author:网页作者,copyright:版权信息)。编码方式要放在......
  • 30天速成计划:打造坚实基础,把握AI产品经理机遇
    前言在前瞻性布局培育新质生产力进程中,人工智能、先进计算等新一代信息技术逐渐实现与千行百业的相互渗透及深度融合,以“大模型+大数据+大算力”特征为代表的大智能领域全线发展高歌猛进,集成电路、绿色能源、生命科学等科技创新领域蓬勃发展。与之对应,相应前沿技术岗位人才......
  • 10分钟速成golang
    Go拥有命令式语言的静态类型,编译很快,执行也很快,同时加入了对于目前多核CPU的并发计算支持,也有相应的特性来实现大规模编程。//单行注释/*多行注释*///导入包的子句在每个源文件的开头。//main比较特殊,它用来声明可执行文件,而不是一个库。packagemain//Import......
  • 泰语快速学习方法!速成方法学习!
    要快速学习泰语,可以采取多种策略,如掌握基础语法和词汇,专注于发音练习以掌握泰语特有的音调系统,利用语言学习软件进行互动学习,通过观看泰语媒体内容提高听力理解,与母语者进行语言交换来锻炼口语,参加课程以获得系统的学习指导,使用闪卡来记忆新词汇,深入了解泰国文化以更好地理解语......
  • Vue期末考试速成复习指南附编程题(js开发基础+路由+Pinia)
    前文:本文参考书籍《Vue.js前端开发实战(第二版)》--黑马程序员/编著重点在于本科期末速成和0基础入门目录:一.初识Vue1.包管理工具:npmyarn2.创建Vue项目二.js开发基础1.什么是单文件组件?2.单文件组件基本结构3.切换页面显示组件3.数据绑定与输出4.Vue引入Html页面5.......
  • 【国赛速成系列】建模手三天速成计划
    内容来自https://www.bilibili.com/video/BV14M4m1y77t目录一、第一天1、常见模型分类2、两大学习神器(1)SPSSPRO (2)ChatGPT二、第二天三、第三天一、第一天建模手在最开始需要了解模型分类及国赛常见模型的用法1、常见模型分类(1)机理分析类     来源于实......
  • Java微信授权登录小程序接口
    1.微信授权登录小程序的流程是什么微信授权登录小程序的流程是一个涉及前端和后端交互的过程,主要目的是让用户能够使用微信账号快速登录小程序,避免重复输入用户名和密码。以下是该流程的详细步骤:1.1前端操作(1)触发登录:用户在小程序中点击“登录”按钮或进入需要登录的页面时,系......
  • 剪辑技巧速成课,高清拍摄+调色 转扇子,建筑-抠图精通,新手秒变剪辑专家
    1.引言随着数字媒体的发展,视频剪辑技术已成为传达创意和信息的重要手段。本课程通过系统化的教学,使学员能在较短时间内掌握视频剪辑的核心技巧。2.课程内容摘要基础剪辑技巧隔空抓取技术:学习如何实现物体的瞬间移动效果。扇子转场:掌握使用扇子进行平滑转场的技巧。创......