13-02-uniapp供热服务接口配置
eggjs配置mysql数据库
npm i egg-mysql --save
mysql:{enable: true,package: 'egg-mysql',},
config.mysql={client: {// hosthost: '127.0.0.1',// 端口号port: '3306',// 用户名user: 'root',// 密码password: 'root',// 数据库名database: 'nideshop',},// 是否加载到 app 上,默认开启app: true,// 是否加载到 agent 上,默认关闭agent: false,}
egg.js的调试技巧
1 怎么查询错误
停掉数据库配置 报错
2 关于运行egg的技巧
npm run start 命令 正式上线(production)的时候我们才会npm run start
egg-scripts start --daemon --title=egg-server-project
配置端口号
config.cluster = {listen: {path: '',port: 7002,hostname: '0.0.0.0',}}
npm run stop
停止start
测试的时候怎么办?
npm run dev
配置跨域
说明: 跨域主要有两种,一种是前端代理跨域,一种后端跨域
1 前端代理配置跨域
2 后端跨域
egg.js跨域
npm/cnpm install egg-cors --save
- 在egg项目中 config/plugins.js 添加以下配置
cors: {enable: true,package: 'egg-cors'
}
- 在egg项目中 config/config.default.js 添加以下配置
module.exports = {const config = exports = {}config.security = {csrf: {enable: false,ignoreJSON: true},domainWhiteList: [ '*' ], // 白名单};config.cors = {origin: '*', // 如果不写origin则会按照白名单中的域名允许跨域, * 代表允许所有的域名进行跨域请求allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH'}}
express跨域
egg.js解决跨域egg-cors的本质还是来自于设置跨域header头
//设置跨域访问
app.all('*', (req, res, next) => {res.header("Access-Control-Allow-Origin", "*");res.header("Access-Control-Allow-Headers", "X-Requested-With");res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");res.header("X-Powered-By",' 3.2.1')res.header("Content-Type", "application/json;charset=utf-8");next();
});
分页
sql
select *from 表名 limit 0,10;select *from nideshop_goods limit 20,10;select count(*) from nideshop_goods;
邮件
npm install nodemailer --save
关于发送邮件
短信(阿里云短信平台)
阿里云短信
npm install @alicloud/sms-sdk --save
上传
如果想要用hbuilderx去运行微信小程序开发者端,需要安全的端口
设置》通用设置》安全》服务端口
1 普通上传
1.1 egg上传
普通上传
2 express上传
前端代码
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>文件上传</title>
</head>
<body><h3>文件上传:</h3>选择一个文件上传: <br /><form action="/upload" method="post" enctype="multipart/form-data"><input type="file" name="content" /><br /><input type="submit" value="上传文件" /></form>
</body>
</html>
后端代码
var fs = require('fs');
var express = require('express');
var multer = require('multer');var router = express.Router();
var upload = multer({dest: 'upload_tmp/'});router.post('/', upload.any(), function(req, res, next) {console.log(req.files[0]); // 上传的文件信息var des_file = "./upload/" + req.files[0].originalname;fs.readFile( req.files[0].path, function (err, data) {fs.writeFile(des_file, data, function (err) {if( err ){console.log( err );}else{response = {message:'File uploaded successfully',filename:req.files[0].originalname};console.log( response );res.end( JSON.stringify( response ) );}});});
});module.exports = router;
2 阿里云oss上传
为了节省服务器的空间 , 占带宽,思考:为了解决这个带宽问题
阿里云和七牛云提供一种服务, 叫对象存储oss
appid: LTAIC6ZMDHPvtv5K
appsecret: TsCBZKXlybXggr900DGqtLeN2QB17J
安装阿里oss上传相关的工具
npm install ali-oss -D
调试代码的技巧 要用外网的IP地址
ipconfig
android和微信小程序用本地127.0.0.1是不行的,需要用对外网的
3 base64图片上传
有些时候上传的图片是base64的图片,需要大家用js将原本的文件转成base64的图片, 前端的文件转成base64上传
引入自:https://www.cnblogs.com/juehai/p/9706141.html
后端:
app.post('/upload', function(req, res){
//接收前台POST过来的base64
var imgData = req.body.imgData;
//过滤data:URL
var base64Data = imgData.replace(/^data:image\/\w+;base64,/, "");
var dataBuffer = new Buffer(base64Data, 'base64');
fs.writeFile("image.png", dataBuffer, function(err) {
if(err){
res.send(err);
}else{
res.send("保存成功!");
}
});
});
excel数据的读取
const Excel = require('exceljs');
excel的导入和导出
引自: https://www.jianshu.com/p/0f6a338c54f4
exceljs中文文档
依赖库引入
const fs = require('fs')
const Excel = require('exceljs')
初始化Excel
const workbook = new Excel.Workbook()
workbook.creator = 'test'
workbook.lastModifiedBy = 'test'
workbook.created = new Date()
workbook.modified = new Date()
生成一个工作表
let sheet = workbook.addWorksheet('2018-10报表')# Add column headers and define column keys and widths
sheet.columns = [{header: '创建日期', key: 'create_time', width: 15},{header: '单号', key: 'id', width: 15},{header: '电话号码', key: 'phone', width: 15},{header: '地址', key: 'address', width: 15}
]
const data = [{create_time: '2018-10-01',id: '787818992109210',phone: '11111111111',address: '深圳市'
}]
# Add an array of rows
sheet.addRows(data)
生成excel文件
return await workbook.xlsx.writeFile('attachement/用户报表.xlsx').then( async () => {this.ctx.attachment(`用户报表.xlsx`)this.ctx.type = '.xlsx'this.ctx.body = fs.readFileSync(filePath)
}, function (err: any) {console.log(err)
})
QQ第三方登录 微信第三方登录
在微信小程序开发者工具中,项目中的mainfest.json有App模块配置中有OAuth(登录鉴权),可以打开qq和微信的登录配置。
第一步 uniapp官网提供的文档
https://ask.dcloud.net.cn/article/192
第二步 找到qq第三方登录入口
https://connect.qq.com/index.html
腾讯官方提供的一些接口
https://wiki.connect.qq.com/api%E5%88%97%E8%A1%A8
腾讯官方提供的接口
https://wiki.connect.qq.com/js_sdk%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E
单独的进行第三方登录静态页面
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script type="text/javascript" charset="utf-8"src="http://connect.qq.com/qc_jssdk.js"data-appid="101458871"data-redirecturi="http://169.254.201.186:7002/callback"></script>
</head>
<body><div><button id="qqLoginBtn">qq登录</button></div><script>QC.Login({btnId:"qqLoginBtn" //插入按钮的节点id});</script>
</body>
</html>
后端代码
async callback(){const { ctx } = this;//接收access_token//console.log(location)//console.log(JSON.stringify(ctx.query.access_token)+"--------------------")//通过授权得到access_token 获取用户的openidvar access_token=ctx.query.access_tokenvar url="https://graph.qq.com/oauth2.0/me?access_token="+access_tokenconst result = await ctx.curl(url); //后端发送 http get请求console.log(result.data.toString()) //callback( {"client_id":"101458871","openid":"BBB4A8B679A144168189DF4C27FA6132"} )var call = result.data.toString()var jsonz=JSON.parse(call.substring(9).substr(0,call.substring(9).indexOf(")")))var clientid = jsonz.client_idvar openid = jsonz.openid//再次再请求一次接口var url="https://graph.qq.com/user/get_user_info?access_token="+access_token+"&oauth_consumer_key=101458871&openid="+openidconst res = await ctx.curl(url);var user = res.data.toString()console.log(user)//将数据存储到数据库中//var url="https://graph.qq.com/user/get_user_info?access_token="+access_token+"&openid=101458871"+"&oauth_consumer_key=12345"//通过后端发送get post请求var location = "<script>window.location.href='http://localhost:8080/#/</script>"; ctx.body = location ;}
uniapp集成qq第三方登录的js-sdk的过程
1 在跟目录中新建一个index.html
2 需要配置
3 需要在
就已经在项目集成好了jssdk
https://graph.qq.com/oauth2.0/show?which=Login&display=pc&client_id=101458871&response_type=token&scope=all&redirect_uri=http%3A%2F%2Fwww.jingkela.com%2Fqqlogin.php
可道云桌面
官网
http://app.grfuwutong.com/kod/index.php?user/login
进入服务器端可道云 看到controllers 内包含所有的接口信息
账户密码
/www/wwwroot/app.grfuwutong.com/addons/zjhj_mall/core/modules/api/controllers/
客服系统
websocket的定义
阮一峰的教学日志: http://www.ruanyifeng.com/blog/2017/05/websocket.html
我的客服系统账号
http://kefu.jingkela.com/platform/passport/login.html
常用的第三方的客服系统,百度商桥,但是都要收费
基于nodeJS也有类似的客服系统(必须有redis内存数据库)
github: https://github.com/gytai/KeFu
使用 socket.io.js 实现 websocket 实时通讯
https://www.jianshu.com/p/725ff42c7af3
redis环境的搭建
小P面板
xxtea加密
XXTEA for Node.js
引入 https://github.com/xxtea/xxtea-nodejs/releases
var xxtea = require('xxtea-node');var str = "Hello World! 你好,中国
13-02-uniapp供热服务接口配置相关推荐
- 同一局域网内,调用其他同事本地服务接口配置
1.网上有不少的文档,好多都是关闭防火墙的,我想说的是,真被其他的人的"误操作",自己找个其他地哭去吧 2.直接上干货 第一步: 第二步: 第三步: 第三步: 第四步,返回上一个界 ...
- Caffe学习系列(13):数据可视化环境(python接口)配置
原文有更新: Caffe学习系列(13):数据可视化环境(python接口)配置 - denny402 - 博客园 http://www.cnblogs.com/denny402/p/5088399. ...
- 业务中台管理系统、业务中台架构、接口类服务、模型类服务、界面类服务、组件类服务、服务架构、中后台、服务审核、AI服务、位置服务、行业场景服务、企业中台、接口配置、模型配置、数据处理、结构化数据、数据源
业务中台管理系统.业务中台架构.接口类服务.模型类服务.界面类服务.组件类服务.服务架构.中后台.服务审核.AI服务.位置服务.行业场景服务.企业中台.接口配置.模型配置.数据处理.结构化数据.数据源 ...
- 【SAP PO】SAP PO 接口配置完整教程之二REST服务对接
SAP PO 接口配置完整教程之二REST服务对接 1.了解服务协议 1.1.服务通讯协议 1.2.具体接口协议 1.3.接口服务测试 2.PO端接口配置 2.1.PO端ESR配置 2.2.PO端IB ...
- 【SAP PO】X-DOC:SAP PO 接口配置 REST 服务对接填坑记
X-DOC:SAP PO 接口配置 REST 服务对接填坑记 1.背景 2.PO SLD配置 3.PO https证书导入 1.背景 (1)需求背景: SAP中BOM频繁变更,技术人员在对BOM进行变 ...
- Oracle服务端配置IP,修改主机和服务器的 IPv6 接口配置
修改主机和服务器的 IPv6 接口配置 本节介绍如何修改作为主机或服务器的节点上启用了 IPv6 的接口的配置.大多数情况下,应当针对启用了 IPv6 的接口使用地址自动配置,如<系统管理指南: ...
- dubbo服务接口如何mock_2019年Dubbo你掌握的如何?快看看这30道高频面试题!
前言 Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式 ...
- iframe的src动态修改并刷新_微服务中配置中心Config+消息总线Bus,实现分布式自动刷新配置
技术/杨33 一.分布式配置中心Config 一套集中的.动态的配置管理,实现统一配置微服务中的每个子服务. Spring Cloud Config为微服务架构提供了集中化的外部配置支持,配置服务器为 ...
- 详解“FTP文件传输服务”安装配置实例
"FTP文件传输服务"安装配置实例 家住海边喜欢浪:zhang789.blog.51cto.com 目录 简介 ftp工作原理 常见的FTP服务 Vsftpd服务器的安装 Vsft ...
- 微服务启动顺序_基于华为云CSE微服务接口兼容常见问题
微服务接口兼容常见问题 在进行微服务持续迭代开发的过程中,由于新特性在不停的加入,一些过时的特性在不停的修改,接口兼容问题面临巨大的挑战,特别是在运行环境多版本共存(灰度发布)的情况下.本章节主要描述 ...
最新文章
- 修改.fig文件中图的x轴或y轴的标题及数据图
- 进化:一个平庸人的互联网之路
- QT的QScriptEngineAgent类的使用
- 小琛和他的学校(dfs)
- xmake高级特性之自定义选项
- 读后感《我回阿里的29个月》
- sm缩写代表什么意思_pe、PE在电气有代表什么意思,你发现没有,电气技术很有意思...
- 盘一盘2020年上半年的微博热搜词条(文末提供获取热搜词条方法)
- linux利用内存加快读盘速度,Linux性能优化从入门到实战:10 内存篇:如何利用Buffer和Cache优化程序的运行效率?...
- jquery插件实现分页
- 二级建造师学python有用_二级建造师
- SpringBoot中出现‘@‘ that cannot start any token. (Do not use @ for indentation)....
- task9-文件与文件系统
- python-RFM模型
- dfuse 发布自助 Auth API 账户管理门户,赋予开发者自主管理 key 的平台
- 办公室电脑如何修改IP地址、设置共享、连接打印机
- python变量的值的传递方式
- 数据分析中缺失值的处理方法
- yarn 安装 报错:“info There appears to be trouble with your network connectio“ 解决方案
- Python——加密后的China
热门文章