big*_*ato 4 javascript ajax rxjs rxjs5 redux-observable
我有一些RxJS代码,这是它的一部分:
.mergeMap(action => {
const user = store.getState().user;
return ajax.post(`${config.API_BASE_URL}/api/v1/rsvps`, {
rsvp: {
meetup_id: action.payload,
user_id: user.id,
}
})
.map(action => calendarActions.rsvpAdded(action.payload));
})
Run Code Online (Sandbox Code Playgroud)
但是,我的服务器告诉我,params的格式不正确:
[info] POST /api/v1/rsvps
[debug] Processing by ParrotApi.RsvpController.create/2
Parameters: %{"rsvp" => "[object Object]"}
Pipelines: [:api_auth]
[info] Sent 400 in 10ms
Run Code Online (Sandbox Code Playgroud)
我尝试使用JSON.stringify,但这不起作用.它只是使我的参数成为一个字符串.
rsvp: JSON.stringify({
meetup_id: action.payload,
user_id: 123,
})
Run Code Online (Sandbox Code Playgroud)
Parameters: %{"rsvp" => "{\"meetup_id\":1,\"user_id\":123}"}
我不知道您的服务器期望什么参数格式,但如果您想发送JSON有效负载,您还应该包含正确的标头Content-Type: application/json.使用RxJS 5,它如下所示:
ajax.post('url', {param: 42}, { 'Content-Type': 'application/json' });
Run Code Online (Sandbox Code Playgroud)
现在,身体有效负载将自动转换为JSON.(参见AjaxObservable.ts#L286.
或者,如果您不想发送标题,则需要将整个对象转换为JSON:
ajax.post('url', JSON.stringify({param: 42}));
Run Code Online (Sandbox Code Playgroud)
顺便说一句,你肯定不想结合这两种方法(包括标题和JSON.stringify自己调用),因为这会将相同的有效负载转换为JSON两次.
| 归档时间: |
|
| 查看次数: |
6510 次 |
| 最近记录: |