前后端api

修改

http api和请求fetch

在前面介绍,也说到过可以使用koa-cola定义的api基类来创建自己的api类,并使用api的fetch方法获取数据:

1
2
const api = new GetTodoList({});
const data = await api.fetch(helpers.ctx);

上面代码可以兼容服务器端和客户端,ajax库使用了axios,比如 todolist demo 有个react组件定义:

1
2
3
4
5
6
7
8
9
10
11
12
13
@Cola({
initData : {
todosData : async ({ params, helpers, store: { dispatch } }) => {
const api = new GetTodoList({});
const data = await api.fetch(helpers.ctx);
return data.result.result;
}
}
})
class Page extends React.Component<Props, States> {
...
}
export default Page;

如果该组件的路由是服务器端直接渲染,则api.fetch会在服务器端调用,如果该组件是在浏览器端的<Link>跳转,则api.fetch会在浏览器端调用。