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

news2025/1/18 17:01:01

提示:学习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.coloradmin.cn/o/1518742.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

隐藏深的bug发现不了 ,有点挫备感 ,那是你没有进行bug总结 。

1.bug总结的意义 作为功能测试人员来说,可能有一半的时间都花在了和bug打交道上,比如如何发现bug ,提交bug ,跟踪bug以及回归bug上 。作为测试人员最重要的成果的bug ,我们往往更看重的是它的数量 ,却很少…

Android 辅助功能 -抢红包(三)

Android 辅助功能 -抢红包(三) 本篇文章继续讲述辅助功能. 主要通过监听通知栏红包消息,来跳转聊天页面,并自动回复对方"谢谢". 上篇文章我们讲述了监听notification, 跳转聊天界面. 具体可查看: Android 辅助功能 -抢红包(二) 1: 使用monitor抓取id. 打开andro…

RabbitMQ 模拟实现【六】:程序模拟实现

文章目录 模拟实现模拟消费者模拟生产者效果展示 启动结果如下: ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/71841546ad8043f1bd51e4408df791de.png)![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/f6e3e72ff9a4483c978ec48e24f075c2.p…

运营模型—RFM 模型

运营模型—RFM 模型 RFM 是什么其实我们前面的文章介绍过,这里我们不再赘述,可以参考运营数据分析模型—用户分层分析,今天我们要做的事情是如何落地RFM 模型 我们的数据如下,现在我们就开始进行数据处理 数据预处理 因为数据预处理没有一个固定的套路,都是根据数据的实…

Unity类银河恶魔城学习记录10-1 10-2 P89,90 Character stats - Stat script源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Stat.cs using System.Collections; using System.Collections.Generic; us…

C类期刊:基于改进粒子群优化算法的电力系统有功最优潮流程序代码!

程序提出了一种基于改进粒子群优化算法的有功最优潮流模型及求解方法,采用了自适应罚函数法处理最优潮流问题的各种约束条件。通过对IEEE-30节点系统的仿真计算,并且与遗传算法进行比较,验证了提出的模型和方法的有效性。程序算例丰富、注释清…

3.排序查找——2.整数奇偶排序

输入 4 7 3 13 11 12 0 47 34 98 输出 47 13 11 7 3 0 4 12 34 98 【提交地址】 题目分析 关键是找到交换位序的逻辑,有如下几种情况: 左值为奇数,右值为偶数 > 不需要交换左值为偶数,右值为奇数 > 需要交换左值和右值同…

【数据结构】 Map和Set万字总结(搜索树+哈希桶+使用方法+实现方法)

文章目录 Map和Set一、搜索树1.二叉搜索树的查找(search)2.二叉搜索树的插入3.二叉搜索树的删除4.性能分析 二、搜索方法1.概念 三、Map的使用1.概念:2.Map的常用方法:1.V put(K Key ,V Value )2.V get(Object key)3.V getOrDefau…

YOLOv8旋转目标检测实战:训练自己的数据集

课程链接:https://edu.csdn.net/course/detail/39393 旋转目标检测是计算机视觉领域的一个高级任务,它在传统目标检测的基础上进一步发展。传统目标检测技术主要关注于识别和定位图像中的物体,通常以水平边界框(HBB)来标识目标物体的位置。而…

某阿系影城网爬虫JS逆向

本次逆向目标网站如下,使用base64解码获得 aHR0cHM6Ly9oNWxhcmsueXVla2V5dW4uY29tL2ZpbG0vaW5kZXguaHRtbD93YXBpZD1GWVlDX0g1X1BST0RfU19NUFMmc3RhbXA9MTcxMDExNzc5NDM0NiZzcG09YTJvZjYubG9jYXRpb25faW5kZXhfcGFnZS4wLjA= 打开网站,发起请求后,发现请求参数没有加密,请求头…

【Stable Diffusion】入门-03:图生图基本步骤+参数解读

目录 1 图生图原理2 基本步骤2.1 导入图片2.2 书写提示词2.3 参数调整 3 随机种子的含义4 拓展应用 1 图生图原理 当提示词不足以表达你的想法,或者你希望以一个更为简单清晰的方式传递一些要求的时候,可以给AI输入一张图片,此时图片和文字是…

CorelDRAW2024中文版全新功能和软件使用介绍!

亲爱的用户们,我们非常高兴地向您介绍CorelDRAW 2024的全新功能和软件使用介绍!作为一款深受设计师们喜爱的图形设计软件,CorelDRAW一直在不断地优化和升级,力求为您提供更加优秀的创作体验。今天,我们就来一起了解一下…

免费开源的 Vue 拖拽组件 VueDraggablePlus (兼容移动端)

VueDraggablePlus 支持 Vue2 / Vue3,是被尤雨溪推荐了的拖拽组件。我自己试用过了,还挺好用的,兼容移动端。 官网:https://alfred-skyblue.github.io/vue-draggable-plus/ 官网文档里面很详细了,我就不再介绍安装和用…

vitepress里使用gitalk(图文教程)

vitepress里使用gitalk Gitalk 是一个基于 GitHub Issue 和 Preact 开发的评论插件 生成client配置 创建OAuth application 填写完毕,点击 Register application 即可 生成client secrets 一开始没有自动生成 Client secrets,需要手动生成&#xff…

亚信安慧AntDB数据库分布式架构剖析之snapshot receiver进程

本文主要介绍亚信安慧AntDB数据库的分布式架构下的特有进程之snapshot receiver的设计,这也是分布式架构的核心进程之一。 进程简介 该进程的作用从逻辑上解释包含两个方面: 同步快照,并且是作为通信的client端存在 同步事务号,…

css之常用样式

展示样式一&#xff1a; <div class"showListBox"><div class"List" v-for"(i,index) in sealList" :key"index"> <div class"ListItemCon"><div class"ListItem-titleBox"><img src…

Ollama管理本地开源大模型,用Open WebUI访问Ollama接口

现在开源大模型一个接一个的&#xff0c;而且各个都说自己的性能非常厉害&#xff0c;但是对于我们这些使用者&#xff0c;用起来就比较尴尬了。因为一个模型一个调用的方式&#xff0c;先得下载模型&#xff0c;下完模型&#xff0c;写加载代码&#xff0c;麻烦得很。 对于程…

工作中用到的 —— 工作总结提炼出来的股文

这里是目录 ---------------- VUE相关 -----------------1 - Vue3 是怎么得更快的&#xff1f;1-1 Fragment [frɡˈment]1-2 Suspense [səˈspens]1-3 Teleport [ˈtelipɔːt]1-4 v-memo 2- 说一下 Composition API3- 说一下 setup4- watch 和 watchEffect 的区别5- Vue3 响…

mysql索引 (索引的忧缺点 ,联合索引)

索引的忧缺点 优点 &#xff08;增加读操作效率&#xff0c;排序成本&#xff09; 1 查询效率高 2 降低排序成本&#xff0c;索引对应的字段 就已经 自动排序&#xff0c;因为索引本身就是一种排好序的数据结构 缺点&#xff08;降低写操作效率&#xff0c;占用空间&#xf…

知识蒸馏Matching logits与RocketQAv2

知识蒸馏Matching logits 公式推导 刚开始的怎么来&#xff0c;可以转看下面证明梯度等于输出值-标签y C是一个交叉熵&#xff0c;我们要求解的是这个交叉熵对的这个梯度。就是你可以理解成第个类别的得分。就是student model&#xff0c;被蒸馏的模型&#xff0c;它所输出的…