所以我有点拘泥于尝试使用axios
在Redux Thunk中发送请求正文。我工作的应用程序有一个特殊的设置,我们有一个服务,它公开了我们可以在dispatch
调用中使用的后端方法,比如:
// action file
export const subscribeUser = (id, token) => async dispatch => {
await dispatch({
type: t.SOME_ACTION_FETCHING,
api: 'nameOfApi',
method: 'createSubscription',
payload: {
userId: id
}
}).then(
response => dispatch({ type: t.SOME_ACTION_FETCHED, subscriptionStatus: response })
);
};
其中nameOfApi
是要与之通信的后端,createSubscription
是适当的post
方法。我似乎无法在这个请求中发送请求正文。
在dispatch
逻辑中,我尝试过
await dispatch({
type: t.SOME_ACTION_FETCHING,
api: 'nameOfApi',
method: 'createSubscription',
payload: {
userId: id,
subscribeToken: token
}
})
和
await dispatch({
type: t.SOME_ACTION_FETCHING,
api: 'nameOfApi',
method: 'createSubscription',
payload: {
userId: id,
},
subscribeToken: token
})
因此,我试图达到的路线是https://gateway.dev.url/nameOfApi/{userId}/subscription
。我正在尝试在请求正文中发送token
。
当我使用Postman pinghttps://gateway.dev.url/nameOfApi/1234/subscription
(带有适当的标头,这些标头已经由服务处理(时,以下路由成功地返回了我需要的响应,并且在Postman的Body
选项卡中,我发送
{
"subscribeToken": "abcd1234"
}
这正是API所需要的。但在我的React/Redux代码中,我得到了500个错误或409个错误,因为整个请求与Swagger验证不匹配,后者证明ping API是有效的,请求只是以错误的方式发送。
有人能告诉我如何在使用Redux Thunkdispatch
的axios
的post
请求的请求体中发送subscribeToken
的正确方向吗?
提前感谢您的任何潜在指导。。。!
EDIT:要添加,还有一个get
请求,它只需要userId
作为URL参数,下面解析并返回成功响应:
await dispatch({
type: t.SOME_ACTION_FETCHING,
api: 'nameOfApi',
method: 'getSubscription',
payload: {
userId: id,
}
})
因此,post
的问题肯定只是一个语法问题,我将如何将Postman中的工作内容(Body
选项卡参数(转录到dispatch
逻辑中。
实际上看起来我缺少API中的包装器参数,dispatch
请求需要看起来像
await dispatch({
type: t.SOME_ACTION_FETCHING,
api: 'nameOfApi',
method: 'createSubscription',
payload: {
userId: id,
newToken: {
subscribeToken: token
}
}
})
看来我现在都整理好了。Mods可以结束这个问题,除非它能为社区提供信息。