You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Formik组件POST请求适配:如何将地址数据包裹为API要求的permanent_address格式

解决API请求体格式不匹配的问题

你找的方向没错——把请求体包裹进permanent_address对象里就行,只是需要把相关的代码都同步调整到位。这里需要修改三个关键部分:

1. 重构请求体构造逻辑

在AddPersentAddressForm组件的handleSubmit函数里,把原来的扁平字段全部包装到permanent_address对象中,替换掉原来的reqbody构造代码:

const reqbody: IReqBody = {
  permanent_address: {
    division: division,
    district: district,
    thana: thana,
    house: house,
    // 如果后续要启用same_address字段,也需要放在这个对象内(根据API要求调整)
  }
};

2. 更新TypeScript类型定义

因为你用了TypeScript,必须同步更新IReqBody的类型结构,确保类型和API要求的格式一致:

// 先定义地址详情的子类型
type AddressDetails = {
  division: string;
  district: string;
  thana: string;
  house: string;
  // same_address?: boolean; // 后续启用时可添加
};

// 再定义完整的请求体类型
type IReqBody = {
  permanent_address: AddressDetails;
};

3. 可选:优化请求函数的参数类型

为了让代码类型更严谨,把addPersonalInfo的参数从any改成我们刚定义的IReqBody:

export async function addPersonalInfo(reqbody: IReqBody) {
  // 原有请求逻辑保持不变
}

这样修改后,你的请求payload就会完全匹配API要求的格式:

{
  "permanent_address": {
    "house": "Manama Tower",
    "division": "Dhaka",
    "district": "DHAKA-NORTH",
    "thana": "Dhanmondi"
  }
}

另外注意API示例里的字段值是小写(比如"dhaka"),如果API严格要求小写格式,你可以在构造请求体时把对应字段转成小写:

permanent_address: {
  division: division.toLowerCase(),
  district: district.toLowerCase(),
  thana: thana.toLowerCase(),
  house: house,
}

内容的提问来源于stack exchange,提问作者ashfaqrafi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 03:37:41