总结几种常用提供接口的方式,学习目的:
1.学习不同语言下Web框架。
2.总结不同架构优缺点,培养架构意识。
3.不同语言下,可以快速的提供API。
1.Node.js 下express 框架。
正如官网说明一样,这是一种高度包容、快速而极简的 Node.js Web 框架,值得了解Node.js一个初步学习的框架。
下面具体介绍该框架下提供api的操作方式,以连接Mysql数据库为例,提供查询接口。
1.0 下载Node.js。
1.1 使用webstrom IDE,创建express 应用。
1.2 该框架下会自动生成如下几个文件夹。
a.bin 文件夹
该文件夹下就一个www的js文件,该文件配置路径和服务接口。
b.node_modeuls
该文件夹下有很多node下的library模块包。
c.pubilc
使用web前端时,此处存放图片,css级联表,以及js文件。
d.routes
路由设置,即自定义请求的URL。
e.views
前端使用
同时同一级别下还有app.js,package.json,pack-lock.json文件
如果只想提供使用api的话,仅仅使用routes文件夹以及app.js,package.json即可。
1.3 提供接口
a.bin 文件下www.js 修改端口,默认是3000。
b.routes文件下添加一个getPerson.js,作为处理接口js文件。
var express =require('express');
var router =express.Router();
//add
var URL=require('url');
var mysql=require('mysql');
var connection=mysql.createConnection({//创建mysql实例
host:'127.0.0.1',
port:'3306',
user:'***',
password:'***',
database:'********'
});
connection.connect();
//add
/* GET users listing. */
router.get('/', function(req, res, next) {
//解析请求参数
console.log("enter getPerson");
console.log(req.query.url,req.query.name);
var sql='SELECT * FROM personinfo WHERE Name=';
var params=URL.parse(req.url,true).query;
console.log('Params:',params);
console.log('SELECT * FROM personinfo WHERE Name=',params.Name);
connection.query('SELECT * FROM personinfo WHERE Name = ? LIMIT 10',[params.Name],function (err,result){
if (err){
console.log('get person error',err);
return;
}
res.send(result)
}
);
//res.send('add by myself');
});
module.exports = router;
c.修改app.js 添加路由
//add by myself
var getPersonRouter=require('./routes/getPerson');
//add by myself
app.use('/getPerson',getPersonRouter);
d.添加依赖包
"dependencies": {
"cookie-parser": "~1.4.3",
"debug": "~2.6.9",
"express": "~4.16.0",
"http-errors": "~1.6.2",
"morgan": "~1.9.0",
"pug": "2.0.0-beta11",
"mysql": "2.16.0"
}
1.4 测试接口
http://localhost:3000/getPerson/?Name=张三
2.踩坑提示。
##连接mysql的时候,注意在package.json下添加,然后需要执行npm install mysql
##连接mysql的时候,需要修改自己的mysql的用户名和密码,为宽松模式。
mysql8.0版本 报错:Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol...
修改:
mysql -u root -p
123456
use mysql;
alter user 'root'@'localhost' identified with mysql_native_password by '123456';
flush privileges;
注意:123456是我自己连接数据库的密码哈