Generating commit message...
This commit is contained in:
169
mini-program/api/example.js
Normal file
169
mini-program/api/example.js
Normal file
@@ -0,0 +1,169 @@
|
||||
// API 使用示例
|
||||
import api, { userService, travelService, homeService, apiUtils } from './index.js'
|
||||
|
||||
// 示例1: 用户登录
|
||||
async function exampleLogin() {
|
||||
try {
|
||||
const result = await userService.login({
|
||||
username: 'user123',
|
||||
password: 'password123'
|
||||
})
|
||||
|
||||
console.log('登录成功:', result)
|
||||
// 保存token
|
||||
api.setAuthToken(result.token)
|
||||
|
||||
} catch (error) {
|
||||
console.error('登录失败:', error)
|
||||
api.handleError(error)
|
||||
}
|
||||
}
|
||||
|
||||
// 示例2: 获取首页数据
|
||||
async function exampleGetHomeData() {
|
||||
try {
|
||||
const homeData = await homeService.getHomeData()
|
||||
console.log('首页数据:', homeData)
|
||||
|
||||
// 或者使用错误处理包装器
|
||||
const { success, data, error } = await api.withErrorHandling(
|
||||
homeService.getHomeData(),
|
||||
'首页数据加载成功'
|
||||
)
|
||||
|
||||
if (success) {
|
||||
// 处理数据
|
||||
console.log('处理首页数据:', data)
|
||||
}
|
||||
|
||||
} catch (error) {
|
||||
api.handleError(error, '首页数据加载失败')
|
||||
}
|
||||
}
|
||||
|
||||
// 示例3: 分页获取旅行计划
|
||||
async function exampleGetTravelPlans() {
|
||||
try {
|
||||
const pagination = apiUtils.generatePagination(1, 10)
|
||||
const travels = await travelService.getList({
|
||||
...pagination,
|
||||
keyword: '西藏'
|
||||
})
|
||||
|
||||
console.log('旅行计划列表:', travels)
|
||||
|
||||
} catch (error) {
|
||||
api.handleError(error)
|
||||
}
|
||||
}
|
||||
|
||||
// 示例4: 文件上传
|
||||
async function exampleUploadAvatar() {
|
||||
try {
|
||||
// 选择图片
|
||||
const res = await uni.chooseImage({
|
||||
count: 1,
|
||||
sizeType: ['compressed'],
|
||||
sourceType: ['album']
|
||||
})
|
||||
|
||||
const filePath = res.tempFilePaths[0]
|
||||
const uploadResult = await userService.uploadAvatar(filePath)
|
||||
|
||||
console.log('头像上传成功:', uploadResult)
|
||||
|
||||
} catch (error) {
|
||||
api.handleError(error, '头像上传失败')
|
||||
}
|
||||
}
|
||||
|
||||
// 示例5: 完整的页面数据加载流程
|
||||
async function loadPageData() {
|
||||
try {
|
||||
// 并行加载多个数据
|
||||
const [banners, travels, animals, flowers] = await Promise.all([
|
||||
homeService.getBanners(),
|
||||
homeService.getRecommendedTravels(),
|
||||
homeService.getHotAnimals(),
|
||||
homeService.getFeaturedFlowers()
|
||||
])
|
||||
|
||||
return {
|
||||
banners: banners || [],
|
||||
travelPlans: travels || [],
|
||||
animals: animals || [],
|
||||
flowers: flowers || []
|
||||
}
|
||||
|
||||
} catch (error) {
|
||||
api.handleError(error)
|
||||
// 返回默认数据或空数据
|
||||
return {
|
||||
banners: [],
|
||||
travelPlans: [],
|
||||
animals: [],
|
||||
flowers: []
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 示例6: 订单支付流程
|
||||
async function examplePaymentFlow(orderId) {
|
||||
try {
|
||||
// 1. 创建支付
|
||||
const payment = await paymentService.create({
|
||||
orderId,
|
||||
amount: 100,
|
||||
paymentMethod: 'wechat'
|
||||
})
|
||||
|
||||
// 2. 调用微信支付
|
||||
const payResult = await uni.requestPayment({
|
||||
timeStamp: payment.timeStamp,
|
||||
nonceStr: payment.nonceStr,
|
||||
package: payment.package,
|
||||
signType: payment.signType,
|
||||
paySign: payment.paySign
|
||||
})
|
||||
|
||||
// 3. 确认支付结果
|
||||
if (payResult.errMsg === 'requestPayment:ok') {
|
||||
// 支付成功,更新订单状态
|
||||
await orderService.pay(orderId)
|
||||
console.log('支付成功')
|
||||
}
|
||||
|
||||
} catch (error) {
|
||||
api.handleError(error, '支付失败')
|
||||
}
|
||||
}
|
||||
|
||||
// 导出示例函数
|
||||
export default {
|
||||
exampleLogin,
|
||||
exampleGetHomeData,
|
||||
exampleGetTravelPlans,
|
||||
exampleUploadAvatar,
|
||||
loadPageData,
|
||||
examplePaymentFlow
|
||||
}
|
||||
|
||||
// 在页面中使用示例
|
||||
/*
|
||||
// 在Vue组件的methods中
|
||||
methods: {
|
||||
async loadData() {
|
||||
const pageData = await loadPageData()
|
||||
this.banners = pageData.banners
|
||||
this.travelPlans = pageData.travelPlans
|
||||
this.animals = pageData.animals
|
||||
this.flowers = pageData.flowers
|
||||
},
|
||||
|
||||
async handleLogin() {
|
||||
await exampleLogin()
|
||||
// 登录成功后重新加载数据
|
||||
await this.loadData()
|
||||
}
|
||||
}
|
||||
*/
|
||||
Reference in New Issue
Block a user