前后端交互---记录总结

本文详细介绍了在前后端交互过程中遇到的加号(+)被转换成空格的问题,并提供了两种解决方案:一是前端使用replace方法将加号替换为%2B;二是后台捕获并进行字符串指定替换。

有段时间对于前后端交互碰到各种问题,在此慢慢记录。

1.解决Java获取前端URL中加号(+)被转换成空格的问题
当时数据传输感觉没什么问题,但是查询不到结果,最后断点调试发现此问题
方法一:
前端处理: var str='abc+123'
var str1 = str.replace('+', '%2B');
方法二:后台捕获处理:方法不讲啦,就也是字符串指定替换Ok啦;

### 鸿蒙 ArkTS 前后端交互实现方式 #### 1. **ArkTS 的 Sendable 对象规范** 在鸿蒙应用开发中,`Sendable` 是一种特殊的对象类型,主要用于确保对象可以在不同的线程间安全传输。然而,在与 TypeScript 或 JavaScript 进行交互时,需严格遵循 `Sendable` 对象的相关规则[^1]。例如,禁止修改 `Sendable` 对象的结构(增加、删除属性或更改属性类型),这是为了避免因不一致的状态而导致潜在错误。 以下是一个典型的反例: ```typescript class A { state: number = 0; } @Sendable class SendableA { state: number = 0; } let a2: SendableA = new A() as SendableA; // 错误:违反了 Sendable 规范 ``` 上述代码试图将非 `Sendable` 类型强制转换为 `Sendable` 类型,这违背了设计原则,可能导致不可预测的行为。 --- #### 2. **前后端通信的基础架构** 鸿蒙系统的核心理念之一是分布式架构,这意味着它可以轻松跨越多个设备进行数据同步和功能协同[^2]。因此,在实现前后端交互时,通常会借助 HTTP 请求或其他网络协议来完成数据交换。 常见的实现方法包括但不限于: - 使用 RESTful API 接口。 - 调用远程服务以获取或提交数据。 - 处理返回的结果并将其呈现给用户。 --- #### 3. **具体实现案例** ##### (1)**JSON 数据解析** 当从后端接收到 JSON 格式的响应时,可能会遇到复杂的数据结构需要进一步处理的情况。例如,如果只需要提取其中的一部分数值,则可以通过正则表达式或内置函数简化操作[^3]。 以下是具体的代码示例: ```javascript // 假设 data.result 包含原始 JSON 字符串 let result = data.result.toString(); // 将结果转化为字符串形式 console.log(result); // 解析为数组 let arr = JSON.parse(result); console.info(arr); // 移除多余字符(如方括和双引) let newarr = arr.replace(/[\[\]"]+/g, ''); console.info(newarr); // 按照逗分割成数组,并将每一项转换为数字 this.numArr = newarr.split(',').map(Number); ``` 这段代码展示了如何逐步清理和转化来自后端的数据,使其更适合前端展示需求。 --- ##### (2)**登录验证逻辑** 另一个典型场景涉及用户身份认证。假设我们有一个表单用于收集用户名和密码信息,并希望通过调用后端接口完成验证工作[^4]。 下面是完整的实现步骤: ###### 定义状态量 ```typescript @State private inputName: string = ''; // 用户名输入框绑定值 @State private inputPassword: string = ''; // 密码输入框绑定值 @State private users: UsersModel[] = []; // 存储从后端拉取的用户列表 ``` ###### 发起 GET 请求获取用户数据 ```typescript async loginCommit() { try { const response = await axios.get<UsersModel[], AxiosResponse<UsersModel[]>, null>('http://192.168.214.180:8080/springboot/usersList'); this.users = response.data; // 更新本地存储的用户列表 console.info('获取到的数据:' + JSON.stringify(this.users)); // 执行登录校验 for (const user of this.users) { if (user.name === this.inputName && user.password === this.inputPassword) { promptAction.showToast({ message: '登陆成功', duration: 3000, }); router.pushUrl({ url: "pages/Success" }); // 跳转至成功页面 return; } } // 如果循环结束仍未找到匹配记录,则提示失败 console.log("登录失败"); promptAction.showToast({ message: '用户名或密码错误', duration: 3000, }); } catch (error) { console.info('捕获到异常:', JSON.stringify(error)); promptAction.showToast({ message: '未连接到网络', duration: 3000, }); } } ``` 在此过程中,我们利用了 `axios` 库发送异步请求并与后端交互。一旦获得有效反馈即可立即通知用户当前状态化情况。 --- #### 4. **总结** 通过以上分析可以看出,在鸿蒙应用开发中运用 ArkTS 实现前后端交互的关键点主要包括以下几个方面: - 正确理解和使用 `Sendable` 对象及其约束条件; - 设计合理的 API 来满足特定业务需求; - 编写清晰高效的脚本语言代码以便于调试维护。 只要严格按照既定标准行事就能显著减少不必要的麻烦同时提高整体性能表现。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值