express+mysql+vue,从零搭建一个商城管理系统14--快递查询(对接快递鸟)

提示:学习express,搭建管理系统

文章目录

  • 前言
  • 一、安装md5,axios,qs
  • 二、新建config/logistics.js
  • 三、修改routes/order.js
  • 四、添加商品到购物车
  • 总结


前言

需求:主要学习express,所以先写service部分
快递鸟API文档

一、安装md5,axios,qs

npm install axios qs md5 --save-dev

在这里插入图片描述

二、新建config/logistics.js

dao/order.js

const axios = require('axios');
const qs = require('qs');
const md5 = require('md5');//商户ID 请在我的服务页面查看。
let EBusinessID = "xxxxxxxxx";
//加密私钥,由快递鸟提供
let ApiKey = "xxxxxxxxxxxxxxxxxxxxxxxxx";
//请求地址
let url = 'https://api.kdniao.com/api/dist'
//2-json
let DataType = "2";
// 请求指令类型  8002 快递查询API
let RequestType = "8002"const logistics = {query:async (data)=>{const DataSign = Buffer.from(md5(JSON.stringify(data)+ApiKey)).toString('base64');axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';const res = await axios.post(url,qs.stringify({RequestData:JSON.stringify(data),EBusinessID,RequestType,DataSign,DataType,}))console.log(res.data);return res.data}
}module.exports = logistics;

在这里插入图片描述
EBusinessID,ApiKey 通过 快递鸟个人信息获取

EBusinessID对应用户ID
ApiKey对应API key

在这里插入图片描述

三、修改routes/order.js

routes/order.js

const OrderDao = require('../dao/order');
const logistics = require('../config/logistics');
const OrderRoutes = (router)=>{router.post('/order/addGoodsToOrder',async (req,res)=>{const result = await OrderDao.addGoodsToOrder(req.body);res.json(result);});router.get('/order/queryGoodsByUserIdFromOrder',async (req,res)=>{const result = await OrderDao.queryGoodsByUserIdFromOrder(req.query);res.json(result);});router.post('/order/queryOrderLogistics',async (req,res)=>{const result = await logistics.query(req.body);res.json(result);});
}
module.exports = OrderRoutes;

在这里插入图片描述

四、添加商品到购物车

url:http://localhost:1990/order/queryOrderLogistics
params:{"ShipperCode":"YTO","LogisticCode":"xxxxxxxxxxxxxxx","OrderCode":""
}

在这里插入图片描述

免费版本试用为7天或100次

在这里插入图片描述

总结

踩坑路漫漫长@~@

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/540785.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C语言】五种方法实现C语言中大小写字母的转化

文章目录 📝tolower/toupper函数🌉tolower🌠 toupper 🌠 ASCII码关系🌉位操作🌉宏定义 🌠小巧第五位🚩总结 📝tolower/toupper函数 🌉tolower tolower函数是…

人工智能(AI)+、+了什么?互联网+又是什么?

引言 人工智能(Artificial Intelligence,简称AI),作为一门迅猛发展的领域,自20世纪中叶以来一直在不断演进。它涉及计算机科学、机器学习和模式识别等多个学科,旨在开发可以模拟和执行人类智力任务的系统。…

学生考软考合适吗?

可以通过软考的报名要求看出来,软考是没有相关的年龄、学历、工作年限的规定的,所以大学生群体每年报名软考的有很多,在国内政策的支持下,不少的城市开始将这个证书划分到“入户必备”的区域,认可也从国企、央企慢慢过…

K8S日志收集方案-EFK部署

EFK架构工作流程 部署说明 ECK (Elastic Cloud on Kubernetes):2.7 Kubernetes:1.23.0 文件准备 crds.yaml 下载地址:https://download.elastic.co/downloads/eck/2.7.0/crds.yaml operator.yaml 下载地址:https://download.e…

音频读取之wave和liborsa

wave 常见的语音信号处理python库有librosa, scipy, soundfile等等。wave库是python的标准库,对于python来说相对底层,wave不支持压缩/解压,但支持单声道/立体声语音的读取。 读取音频 import wave #导入库file_path D:/ba.wav #文件路径…

cesium-可视化区域分析

全部代码 <template><div id="cesiumContainer" style="height: 100vh;"></div><div id="toolbar" style="position: fixed;top:20px;left:220px;"><el-breadcrumb :separator-icon="ArrowRight&quo…

第2篇:1位二选一数据选择器

Q&#xff1a;创建1位二选一数据选择器&#xff0c;并在DE2-115开发板上通过滑动开关和LEDR硬件来实现。 A&#xff1a;基本原理&#xff1a;两个1位数据输入(x&#xff0c;y)&#xff0c;一个1位数据s控制&#xff08;高、低电平&#xff09;选择(x&#xff0c;y)其中一个数据…

xss.haozi.me靶场“0x00-0x0A”通关教程

君衍. 一、靶场介绍二、第一关 0x00 不做限制三、第二关 0x01 文本闭合标签绕过四、第三关 0x02 双引号闭合绕过五、第四关 0x03 过滤括号六、第五关 0x04 编码绕过七、第六关 0x05 注释闭合绕过八、第七关 0x06 换行绕过九、第八关 0x07 删除标签十、第九关 0x08 多加空格绕过…

[Redis]——Redis持久化的两种方式RDB、AOF

目录 RDB快照模式 概念&#xff1a; 触发时机&#xff1a; 异步做快照 AOF追加模式 概念&#xff1a; 触发时机&#xff1a; bgrewriteaof命令&#xff1a; 比较两种模式&#xff1a; RDB快照模式 概念&#xff1a; RDB模式就是保存当前Redis的状态到本地磁盘文件&am…

Vue2 父子组件某一属性的双向绑定

原本&#xff1a;父组件使用props传值给孩子组件初始化&#xff0c;触发事件子组件使用$emit传值给父组件&#xff0c;很麻烦后来&#xff1a;使用computed和$event例子代码&#xff1a; <template><div class"box">grandpa <el-input v-model"…

【网络】HTTP协议

目录 1. 什么是HTTP协议&#xff1f; 2. 为什么使用HTTP协议&#xff1f; 3. HTTP协议通信过程 4. 什么是url&#xff1f; 5. HTTP报文 5.1 请求报文 5.2 响应报文 6. HTTP请求方式 7. HTTP头部字段 8. HTTP状态码 9. 连接管理 长连接与短连接 管线化连接 1. 什么…

1、鸿蒙学习-为应用/服务进行签名

针对应用/服务的签名&#xff0c;DevEco Studio为开发者提供了自动签名方案&#xff0c;帮助开发者高效进行调试。也可选择手动方式对应用/服务进行签名&#xff0c;如果使用了需要ACL的权限&#xff0c;需采用手动方式进行签名。 自动签名 说明 使用自动签名前&#xff0c;请…