我本来想着封装一下请求,将post请求作为data参数传递,传递过去之后请求报错,报错信息如下图所示。
代码如下图所示,如果我直接在页面中调用uni.request则没有问题,可以正常请求,但是需要将reactive解构到一个原始对象中。但是这个方法如果在封装请求里无效。我检查了他们俩的类型,都是UTSJSONObject,为什么在页面中就可以请求,单独封装一个文件就不行呢?
const registerForm = reactive<RegisterForm>({
username: 'happyUser',
password: '234344',
nickname: '开心的用户',
age: '12',
gender: 0,
avatarUrl: '',
})
const register = ():void => {
// let obj = {...registerForm}
// uni.request({
// url: 'http://192.168.27.58:8080/app/auth/register',
// method: "POST",
// data: obj,
// success:(res) => {
// console.log(res.data);
// },
// fail:(res) => {
// console.log(res);
// }
// })
let obj = {...registerForm}
console.log(obj);
userRegister(obj).then(res => {
console.log(res);
})
}
// 封装的请求
export const userRegister = (data : UTSJSONObject ):Promise<ApiResponse> => {
// return post("/auth/register",data)
return new Promise<ApiResponse>((resolve,reject) => {
uni.request<ApiResponse>({
url: 'http://192.168.27.58:8080/app/auth/register',
method: "POST",
data,
success: (response) => {
const jsonResult = response.data as ApiResponse
if (jsonResult != null) {
if (jsonResult.code != 200) {
uni.showToast({ title: jsonResult.msg ?? "出错了", icon: 'none' })
}
resolve(jsonResult)
} else {
reject(new Error("响应数据为空"))
}
},
fail: (err) => {
console.error("POST 请求错误:", err)
uni.showToast({ title: "请求失败: " + err.errMsg, icon: 'none' })
reject(err)
}
})
})
}