如何在Redux Thunk的dispatch中通过Axios Post传递请求体?
解决方案
修改后的Action代码
export const subscribeUser = (id, token) => async dispatch => { await dispatch({ type: t.SOME_ACTION_FETCHING, api: 'nameOfApi', method: 'createSubscription', // 传递URL路径参数:对应路由中的{userId}占位符 params: { userId: id }, // 传递POST请求体:完全匹配Postman中成功的格式 payload: { subscribeToken: token } }).then( response => dispatch({ type: t.SOME_ACTION_FETCHED, subscriptionStatus: response }) ); };
问题根源分析
- 参数位置错误:你之前把
userId放在payload中,导致它被当作请求体发送,而非URL路径参数。后端路由需要userId在路径中,请求体需要subscribeToken,两者位置颠倒就会触发Swagger验证失败或路由匹配错误。 - 请求体格式不符:原代码的请求体是
{"userId": "xxx"},和后端要求的{"subscribeToken": "xxx"}完全不匹配,这是500/409错误的直接原因。
额外排查点
如果修改后仍报错,检查项目架构的参数约定:
- 部分封装架构会用
pathParams/urlParams替代params作为路径参数的字段名 - 确认
createSubscription方法的封装逻辑,看它是否期望路径参数以特定方式传递 - 提前
console.log(token)验证传入的token值是否正确,排除空值或格式异常问题
内容的提问来源于stack exchange,提问作者Lushmoney
相关产品推荐
相关产品推荐

