express电商项目接口

express电商项目之-接口

4.1 创建项目

基于node的项目的脚手架: koa express

// 确保安装 express 脚手架  ----  只需要一次即可
cnpm / npm install express-generator -g

// 创建项目  ---  需要选择模板语言 ejs / jade / pug .....
express admin-app

cd admin-app
// 安装依赖   ----  比不可少(查看有无node_modules文件夹)
cnpm / npm i         /   yarn

// 运行项目  ----  查看package.json ,找到运行命令 scripts
cnpm / npm run start    /    yarn start

// 当修改源文件时,每次都需要重新启动服务器  nodemon / supervisor

cnpm / npm i supervisor -g // 只需一次

// 修改package,json 添加运行命令  dev

"scripts": {
    "start": "node ./bin/www",
    "dev": "supervisor ./bin/www"
},

// 运行命令
cnpm / npm run dev

4.2 创建相应的接口文件

在项目的根目录下创建 api 文件夹,用于存放接口文件

??? 为什么不在routes下创建接口文件

api ---- 接口文档 --- 前端开发人员

routes --- 界面--运维人员

  • 首页 - 搜索、轮播图、nav导航、热推产品、产品的列表(下拉刷新,上拉加载、回到顶部)

search、banner、nav、pro
3238b297f967564ebdb6b38d4120998e.png

  • 分类 - 大分类 - 品牌分类 - 产品列表

category

分类页面点击某一个选项 进入 搜索页面 ---- 排序或者筛选的相关接口

筛选页面点击进入 产品的详情 --- 商品简单介绍、评价、图文详情、猜你喜欢

comment

加入购物车,必须得先登陆,必须得先注册,购物车操作、提交订单,支付、评论

users、cart、order

53565da7ed8a72997d88ff6d94ba200e.png

让这些接口文件全部生效 --- app.js中引入接口以及注册接口 - 记得重新启动服务器
f5d8c6c35b789575fa028dbf48b48559.png

5404b9bb29430cb39dcfe1567c9833af.png

浏览器输入测试接口的可用性

4.3 编写接口文档

  • 安装需要的依赖

cnpm / npm i apidoc -g

  • 在public文件夹内部生成接口文档 - apidoc的文件夹

  • 修改package.json文件,添加如下代码

86770eb97195c222fed80444a690a2ec.png

  • api/pro.js中配置接口文档
    12a76677329e9d93e4f6cb8a2bf9ba0c.png

运行如下命令,生成接口文档

apidoc -i api/ -o public/apidoc/

浏览器访问 http://localhost:3000/apidoc/ 查看接口文档

4.4 创建相应的数据库集合

  • 项目根目录下创建 sql/db.js
    22c219781a5b86adba5deb5151fd03b7.png

  • 打开数据库的连接池,找到mongodb的安装目录,找到bin目录下,指定数据库存放的位置 (d:\data\db),运行命令如下
    a67d181e2818adc0bd290b4978408813.png

mongod --dbpath d:\data\db

aeafa042f0793c6b8860282102fff602.png

  • 项目安装 mongoose,封装数据库连接模块

cnpm i mongoose -S

补充:-g --global -S --save -D --save-dev

f8646303f5811367658bb879f5777de8.png

  • 创建需要的集合

sql/col 文件夹下创建对应的 接口的 数据库集合

col/banners.js - 轮播图数据库集合
46ac9c1c0913ce57440aa9da5354ae61.png

col/pros.js - 数据列表的集合
d1f9a911acb3aa7961d072a9daac487e.png

// 作业 补全其他的 接口的 数据库集合

4.5 导入基本的数据至数据库

  • 准备工作:数据excel表格, 如何导入 - express

  • 安装导入的模块

cnpm i node-xlsx -S

  • 添加一个导入数据的接口 --- 不提供给前端客户 -- 不写接口文档
    // api/pro.js

5589c621bba68d47ccb26c7f98a60a8b.png
a803f1a7ef584fd7e60732453867081c.png
75c81188a5644a590722b10c094375b2.png

d990ee190d0804f520fdc98a57864f09.png
75898eaea423d9d4da487a4464c02296.png

1c266df4a94e95e4c89b3698ed160b75.png

336ed4e192ac0d4e7a763d5654a727ac.png

  • 插入数据库,但是发现少了产品的唯一值 proid

  • 唯一值 ----- uuid

cnpm i node-uuid -S
5160ba1d049fa6fdec7c629104aba3fb.png
b89aaaa05c41bdf5a16b313032d9156d.png

  • 数据插入数据库 --- 封装数据库操作 -- promise
    e3995d49dcdd0859b16cce3d53d0284c.png

8fd7aecce78abffd0dd24e040e912094.png

  • 插入操作

4ccc27c262504ace01e51ac1e369b92e.png
556649f33b63c5d44d46a14995eff638.png

  • 浏览器运行
    4c7f85b586c371bee3505d154d353a58.png

4.6 编写查询产品的接口

  • 封装查询数据的接口 sql/index.js
    ea71fd8b60bafc6dd504ca8abf9f9292.png

556c06a75ede73b6d3aaf4fcaac011c8.png

b75a407abdf30ed1b4c3ff005b4e59d4.png

8e53876ad1bb98edfaa4ac5672905b56.png

  • 接口中请求数据 api/pro.js

e834fb93f7567fab5584cc659003a170.png

07edf65e69c68a6f635215df492782c0.png

4.7 轮播图接口

[{ bannerid: 'banner_1', img: 'https://m.360buyimg.com/mobilecms/s700x280_jfs/t1/89951/22/13835/67854/5e64a4b8E84c207d9/7367dad332fe905b.jpg!cr_1125x445_0_171!q70.jpg.dpg', href: '', alt: '' }, { bannerid: 'banner_2', img: 'https://imgcps.jd.com/ling4/1670651/6Z2i6Iac55yB5b-D55yB5Yqb/5ZOB6LSo5rqQ5LqO5Y2T6LaK/p-5c13869682acdd181deeff08/2d409b2d/cr_1125x445_0_171/s1125x690/q70.jpg', href: '', alt: '' }, { bannerid: 'banner_3', img: 'https://m.360buyimg.com/mobilecms/s700x280_jfs/t1/88149/40/14147/100076/5e6229a8Ef51e1321/54e2c5dd2c357e1e.jpg!cr_1125x445_0_171!q70.jpg.dpg', href: '', alt: '' }, { bannerid: 'banner_4', img: 'https://m.360buyimg.com/mobilecms/s700x280_jfs/t1/93827/39/13300/60640/5e561c60Edd0d8e34/73428f511893f63e.jpg!cr_1125x445_0_171!q70.jpg.dpg', href: '', alt: '' }]
  • 通过命名航插入轮播图数据

f774dd2cfb87773cbddca26a0ce54350.png
29828349e31a674428d3a784be03fca8.png
27bfebe4e2fd99165cc98cd29baec55e.png

浏览器测试
23330e1b4121e81d49eb6b5250feac0b.png

4.8 添加查看详情数据接口

  • 编写接口
    1ad1fa21641ec8c00c3b182d99685436.png

  • 编写接口文档
    bdadb850c23b94b3ee8b43c78eb8e3e7.png

  • 重新生成接口文档并且测试

4.9 实现注册接口

  • 创建用户的集合 sql/col/users.js
    005b70b9ab11e1d6cf261f98471ea77d.png

  • 编写注册接口 api/users.js
    bbb132bfc8c112f4da6924805a1d5550.png

  • 密码加密 crypto、md5

cnpm i md5 -S
522f7d441ab7bb4dc97a38fda4d6c8a3.png
29589c0a32a7b648d5e51cdf591cd511.png

  • 注册接口文档
    3541808b826f44876ab94391ecf70532.png

生成接口文档并且测试

  • 手机号首位去除空格 - 空字符作为了用户名和密码 - 去除 - 删除数据库的废数据

196f1f60032e70aaa408bab98a80b513.png

4.10 实现登陆功能

  • 编写登陆接口 /api/users.js

4baee4bae962e52d334f7f49bc0f5e9a.png

  • 登陆操作
    cf9730f2a6b1284016fb00678ebf5f94.png

  • 编写接口文档
    22d934d8614397961ec027e74f60d35f.png

测试接口

4.11 token接入

token

客户端使用用户名密码登录。

服务端收到请求,去验证用户名与密码。

验证成功后,服务端会签发一个 Token,把这个 Token 发送给客户端。

客户端将收到的Token存储起来。(cookie或者localStorage)

客户端每次需要登录验证的请求都需要带着Token发送给服务器端。

服务器端收到请求后先验证Token,如果成功,返回数据。

  • 安装token的模块 --- jsonwebtoken

cnpm i jsonwebtoken -S
fc14d84c23622cfc6bb6c6bd024ff9a6.png

a68ddea44d891d0b0527951f9a0fae3a.png

  • 验证登陆 -- app.js

9afdaa49d3dc7d15b65121aee9c1223b.png
32a5040ac84a29d57b1626a1c645dd16.png
165136fb2941feaec8ca166f7ca70797.png

5、接口状态码以及含义

状态码备注
200 找到相关的数据
10404 没有查找到相关的数据
10606 该用户已注册
10400 请完善表单信息
10666 注册成功
10808 注册未成功
10888 登陆成功
 
 
 
-------------------------------------------------------文章来自吴大勋(大勋说

 

posted @ 2020-04-09 09:46  haccer  阅读(467)  评论(0)    收藏  举报