前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >React项目配置3(如何管理项目API接口)

React项目配置3(如何管理项目API接口)

作者头像
前端人人
发布2018-04-11 17:21:50
2.6K1
发布2018-04-11 17:21:50
举报
文章被收录于专栏:前端人人前端人人

本教程总共6篇,每日更新一篇,请关注我们!你可以进入历史消息查看以往文章,也敬请期待我们的新文章!

1、React项目配置1(如何管理项目公共js方法)---2018.01.11

2、React项目配置2(自己封装Ajax)---2018.01.12

3、React项目配置3(如何管理项目API接口)---2018.01.15

4、React项目配置4(如何在开发时跨域获取api请求)---2018.01.16

5、React项目配置5(引入MockJs,实现假接口开发)---2018.01.17

6、React项目配置6(前后端分离如何控制用户权限)---2018.01.18

7、React项目配置6(ES7的Async/Await的使用)---2018.01.19(新增)

开发环境:Windows 8,node v8.9.1,npm 5.5.1,WebStorm 2017.2.2

上节课我们讲了如何自己封装ajax,那么我们请求的api接口应该怎么管理呢?

总不能总是这样写把!

代码语言:javascript
复制
componentDidMount() {
    apiRequest.post('/api/xx/xx', {
        start: 0,
        end: 20
    }, data => console.log(data), data => console.log(data.code))
}

今天我们来讲下,如何管理项目API接口!!!

1、我们在 app -> public -> js -> 下新建 apiManager.js

2、然后在这里面写我们的接口地址

代码语言:javascript
复制
export default {
    "newsList": "/api/newsList"
}

3、有时候需要验证用户身份,我们可以在这里api加上token

一般我们登录完之后,会把 token存在本地 cookie中

我们安装第三方依赖

代码语言:javascript
复制
npm i -S react-cookie@0.4.6

主要这里是要 -S ,我们需要把这个包,打进 vendor中

代码语言:javascript
复制
import cookie from 'react-cookie'
let token = cookie.load('token');
export default {
    "newsList": "/api/newsList" + "?token=" + token
}

4、我们再来优化下

代码语言:javascript
复制
import cookie from 'react-cookie'
let token = cookie.load('token');
let postApi = (path) => {
    return path + '?token=' + token;
};
export default {
    "newsList": postApi("/api/newsList"),
    "newsList2": postApi("/api/newsList2"),
}

5、我们导入apiManager.js

在app -> component -> shop -> Index.jsx

代码语言:javascript
复制
import apiManager from '../../public/js/apiManager'

然后调用 newsList

代码语言:javascript
复制
componentDidMount() {
    apiRequest.post(apiManager.newsList, {
        start: 0,
        end: 20
    }, data => console.log(data), data => console.log(data.code))
}

即可!!!

---------------------------------------------------------------------------------------------

一些其他写法!!!

如果你不想,每次都引入apiManager.js ,觉得这样麻烦!你页可以这样做!

在 app -> public-> js -> apiRequest.js 中 ,引用它

代码语言:javascript
复制
import apiManager from './apiManager'

然后改造

代码语言:javascript
复制
const apiRequest = {
    get: (apiName, data, successCB, errorCB) => {
        return ajax(apiManager[apiName], "get", data,
            (data, status, xhr) => successCB && successCB(data.data, data.systemDate),
            errorCB);
    },
    post: (apiName, data, successCB, errorCB) => {
        return ajax(apiManager[apiName], "post", data,
            (data, status, xhr) => successCB && successCB(data.data, data.systemDate),
            errorCB);
    }
};

然后 在app -> component -> shop -> Index.jsx

只需要这样写

代码语言:javascript
复制
componentDidMount() {
    apiRequest.post('newsList', {
        start: 0,
        end: 20
    }, data => console.log(data), data => console.log(data.code))
}

newsList 等于 apiManager.js 中

我们来测试一下,看下浏览器

如果你有什么问题,可以在下方留言给我们!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-01-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端人人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档