大家好, 我使用这个库https://github.com/dvajs/dva/...请求yii2的rest api时, 如何才能将服务器返回的头部x-pagination-page-count, x-pagination-total-count等信息包装进返回结果呢?
当前api 返回信息的头部已包含下列信息x-pagination-current-page:1x-pagination-page-count:35x-pagination-per-page:12x-pagination-total-count:411
我希望将返回的的data重新包装下,使data对象包含list(原来的返回结果), 服务器头信息的x-pagination-total-count,x-pagination-page-count.等信息
但是现在 我只能获取到, 纯粹的rest返回结果 是个数组. 我尝试在 request类中重新封装数据, 各种尝试都失败了. 各种搜 可能是关键词不对 也没有找到解决办法.
请问各位大神, 如何 才能包装成我需要的 对象呢? 谢谢!!!
请求代码如下: const {data} = yield call(query, parse(payload)); if (data) { console.log(data); //!!!这里!!! 我希望将这里返回的data 重新包装下,使data对象list, 服务器头信息,x-pagination-total-count,x-pagination-page-count.等信息 // 但是现在 我只能获取到, 纯粹的rest返回结果 是个数组. 我尝试在 request类中重新封装数据, 各种尝试都失败了. 各种搜 可能是关键词不对 也没有找到解决办法. yield put({ type: 'querysuccess', payload: { list: data.list, total: number(data.total), current: number(data.current), pagesize: data.pagesize ? data.pagesize : 12, } }); }
异步方法如下:export async function query(params) { return request(`/api/users?${qs.stringify(params)}`);}
request类 如下:import fetch from 'dva/fetch';function checkstatus(response) { if (response.status >= 200 && response.status ({data})) .catch((err) => ({ err }));}
yii2 的rest controller 如下: [ 'class' => \yii\filters\cors::classname(), 'cors' => [ // restrict access to 'origin' => ['*'], 'access-control-request-method' => ['*'], 'access-control-request-headers' => ['*'], 'access-control-allow-credentials' => true, // allow options caching 'access-control-max-age' => 3600, // allow the x-pagination-current-page header to be exposed to the browser. 'access-control-expose-headers' => ['x-pagination-current-page'], ], ], ]); } public function actions() { $actions = parent::actions(); // 禁用delete 和 create 操作 unset($actions['delete'], $actions['create']); return $actions; }}
回复内容: 大家好, 我使用这个库https://github.com/dvajs/dva/...请求yii2的rest api时, 如何才能将服务器返回的头部x-pagination-page-count, x-pagination-total-count等信息包装进返回结果呢?
当前api 返回信息的头部已包含下列信息x-pagination-current-page:1x-pagination-page-count:35x-pagination-per-page:12x-pagination-total-count:411
我希望将返回的的data重新包装下,使data对象包含list(原来的返回结果), 服务器头信息的x-pagination-total-count,x-pagination-page-count.等信息
但是现在 我只能获取到, 纯粹的rest返回结果 是个数组. 我尝试在 request类中重新封装数据, 各种尝试都失败了. 各种搜 可能是关键词不对 也没有找到解决办法.
请问各位大神, 如何 才能包装成我需要的 对象呢? 谢谢!!!
请求代码如下: const {data} = yield call(query, parse(payload)); if (data) { console.log(data); //!!!这里!!! 我希望将这里返回的data 重新包装下,使data对象list, 服务器头信息,x-pagination-total-count,x-pagination-page-count.等信息 // 但是现在 我只能获取到, 纯粹的rest返回结果 是个数组. 我尝试在 request类中重新封装数据, 各种尝试都失败了. 各种搜 可能是关键词不对 也没有找到解决办法. yield put({ type: 'querysuccess', payload: { list: data.list, total: number(data.total), current: number(data.current), pagesize: data.pagesize ? data.pagesize : 12, } }); }
异步方法如下:export async function query(params) { return request(`/api/users?${qs.stringify(params)}`);}
request类 如下:import fetch from 'dva/fetch';function checkstatus(response) { if (response.status >= 200 && response.status ({data})) .catch((err) => ({ err }));}
yii2 的rest controller 如下: [ 'class' => \yii\filters\cors::classname(), 'cors' => [ // restrict access to 'origin' => ['*'], 'access-control-request-method' => ['*'], 'access-control-request-headers' => ['*'], 'access-control-allow-credentials' => true, // allow options caching 'access-control-max-age' => 3600, // allow the x-pagination-current-page header to be exposed to the browser. 'access-control-expose-headers' => ['x-pagination-current-page'], ], ], ]); } public function actions() { $actions = parent::actions(); // 禁用delete 和 create 操作 unset($actions['delete'], $actions['create']); return $actions; }}