【项目问题】传参时格式发生错误

博客讲述了前端向后端调用接口时遇到的一个问题,即传递的JSON数据在后端接收到时,其value值被自动加上了中括号。解决方案是在fetch请求时明确设置'Content-Type'为'application/json',以确保数据正确传输。这是一个关于前端与后端数据交互、JSON格式校验和HTTP头部设置的案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前端向后端调接口传参时,传的是json格式的数据,但是接口一直没调用成功,和后端排查问题后发现,后端收到的数据不是json格式的,而是像这样的:

{"version":["V1.4.2 build220119"],"remark":[""],"fileName":["新建 Microsoft Word 文档.dav"],"filePath":["blob:http://localhost:19528/87cb9023-ea32-437c-8cc0-ad76f817e77f"],"fileSize":["14603"],"firmwareId":["119"]}

 也就是说,value值都自动加上了中括号[]。

解决方法:

调用接口时,带上headers

const uploadMinorFirmware=function(param) {
    return fetch({
        url: '/upgrade/uploadMinorFirmware',
        method: 'post',
        data: param,
       //加上下面的代码即可
        headers:{
            'Content-Type':'application/json'
        }
    })
}

 注意:其实是统一封装设置了content-type='application/json'的,但是此处由于后端特殊定义了,因此得再写一遍。

### HarmonyOS 构造函数中的参数校验 在 HarmonyOS 的开发环境中,对于构造函数传递的参数进行校验是一个重要的编程实践。这不仅有助于提高代码的安全性和健壮性,还能减少运行错误发生。 当创建自定义组件并希望在校验传入构造函数的参数,可以采用如下方式: #### 使用 JavaScript 或 TypeScript 进行基本类型检查 ```javascript class MyComponent { constructor(param) { if (typeof param !== 'string') { throw new Error('Parameter must be a string'); } this.param = param; } build() { // 组件的具体逻辑... } } ``` #### 利用 TypeScript 提供更强的静态类型支持 如果项目允许使用TypeScript,则可以通过定义接口来增强类型安全性: ```typescript interface IMyComponentProps { text?: string; // 可选属性 } class MyComponent extends Component<IMyComponentProps> { private props: IMyComponentProps; constructor(props: IMyComponentProps) { super(); if (!props || typeof props.text !== 'string') { throw new Error('Invalid prop "text", expected non-empty string.'); } this.props = props; } build() { Text({ value: this.props.text }); } } ``` 上述例子展示了如何利用 `if` 条件语句来进行简单的参数有效性验证,并抛出异常以阻止不合法的数据进入程序流程[^2]。此外,在更复杂的场景下还可以考虑引入第三方库如 joi.js 或 zod 来简化和加强输入数据的验证过程。 为了确保最佳用户体验以及应用程序稳定性,强烈建议开发者始终对来自外部源(包括但不限于用户输入、网络请求返回的结果等)的所有数据执行严格的校验措施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值