一、网络请求 uni.request
核心方法:异步HTTP请求,支持Promise和Callback两种模式
// 示例:GET请求获取天气数据
uni.request({
url: 'https://api.weather.com/v3/now',
method: 'GET',
data: {
location: 'beijing',
key: 'YOUR_API_KEY'
},
success: (res) => {
console.log('当前温度:', res.data.temperature)
uni.showToast({ title: '获取成功' })
},
fail: (err) => {
console.error('请求失败:', err)
uni.showModal({ content: '网络异常' })
}
})
// 示例:POST提交表单数据
const postData = {
username: 'user123',
password: '******'
}
uni.request({
url: 'https://api.example.com/login',
method: 'POST',
header: { 'Content-Type': 'application/json' },
data: JSON.stringify(postData),
success: (res) => {
uni.setStorageSync('token', res.data.token)
}
})
二、本地存储 uni.setStorage / uni.getStorage
数据持久化方案,支持同步/异步操作
// 存储用户配置
const userConfig = {
theme: 'dark',
fontSize: 16,
notify: true
}
// 异步存储
uni.setStorage({
key: 'userConfig',
data: userConfig,
success: () => console.log('配置已保存')
})
// 同步存储(立即生效)
uni.setStorageSync('lastLogin', new Date().toISOString())
// 数据读取示例
const loadConfig = () => {
try {
const config = uni.getStorageSync('userConfig')
if(config) {
console.log('主题模式:', config.theme)
return config
}
} catch (e) {
console.error('读取失败:', e)
}
return null
}
三、设备信息 uni.getSystemInfo
获取设备基础信息和能力检测
// 获取设备信息
uni.getSystemInfo({
success: (res) => {
console.log('设备型号:', res.model)
console.log('操作系统:', res.platform)
console.log('屏幕尺寸:', res.screenWidth, '×', res.screenHeight)
// 功能检测
if(res.platform === 'android') {
console.log('Android版本:', res.osVersion)
}
// 存储空间检测
if(res.storageSize && res.storageSize < 1024) {
uni.showModal({ content: '存储空间不足' })
}
}
})
// 快捷方式(同步获取)
const sysInfo = uni.getSystemInfoSync()
console.log('DPI:', sysInfo.pixelRatio)
四、实战组合示例:用户登录流程
// 1. 网络请求登录
function login(username, password) {
uni.request({
url: 'https://api.example.com/auth',
method: 'POST',
data: { username, password },
success: (res) => {
if(res.statusCode === 200) {
// 2. 存储令牌
uni.setStorageSync('authToken', res.data.token)
// 3. 获取设备信息并上报
const deviceInfo = uni.getSystemInfoSync()
reportDeviceInfo(deviceInfo)
uni.navigateTo({ url: '/pages/home' })
}
}
})
}
// 设备信息上报
function reportDeviceInfo(info) {
const { model, platform, osVersion } = info
uni.request({
url: 'https://api.example.com/device',
method: 'POST',
header: {
'Authorization': `Bearer ${uni.getStorageSync('authToken')}`
},
data: { model, platform, osVersion }
})
}
关键注意事项:
-
网络请求安全:
- 务必配置合法域名白名单(manifest.json)
- 敏感数据使用HTTPS传输
- 添加请求超时处理:
timeout: 10000
-
存储限制:
- 单条数据最大10MB
- 总存储空间约10MB(不同平台有差异)
- 敏感数据避免明文存储
-
设备能力检测:
// 检测功能可用性 if(uni.canIUse('getSystemInfoSync.pixelRatio')) { console.log('支持DPI检测') } -
跨平台差异:
- iOS存储有沙盒限制
- Android设备信息字段更丰富
- 小程序环境需注意网络请求域名配置
完整API文档参考:Uniapp官方API文档
622

被折叠的 条评论
为什么被折叠?



