nodejs python交互_怎么用node实现前后端交互?

Node 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHP、Python、Perl、Ruby 等服务端语言平起平坐的脚本语言。

使用node实现前后端交互的方法:

前后端交互主要包括3个部分,前端页面、后端服务器、以及数据库,它们之间的关系及整个请求过程如下图所示:

其中重点在于服务器部分,它需要实现以下功能:解决跨域,解析post及get参数,与数据库建立连接,执行sql,获取数据 or 更新操作,断开连接,处理异常,将结果返回。以下将对该部分进行详细说明。

简单说明nodejs server需要依赖的几个重要模块:

1. express:

nodejs的Web应用框架,如下创建一个基本的express程序var express = require('express');

var app = express();

app.get('/', function(req, res){

res.send('hello world');});

app.listen(8181);

2. bodyParser:

express默认使用的模块,用于解析http请求,app.use(bodyParser.urlencoded({ extended: false }));//用于解析req.body数据

3. mysql:

nodejs需要依赖的数据库模块。

解决跨域请求app.all('*',

function(req, res, next) {

//允许的来源

res.header("Access-Control-Allow-Origin", "*");

//允许的头部信息,如果自定义请求头,需要添加以下信息,允许列表可以根据需求添加

res.header("Access-Control-Allow-Headers",

"Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild");

//允许的请求类型

res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");

res.header("X-Powered-By", ' 3.2.1') next();

});

解析请求信息

1. 路由app.VERB(path, [callback...], callback) app.VERB()方法为Express提供路由方法,

VERB是指某一个HTTP动作,

比如app.get()。例如

app.get('/',

function(req, res, next) {

res.send('hello world');

});

路径字符串会被转为正则表达式,当接收到get请求之后,Express会将请求路径与该正则表达式比较,符合条件的会执行回调方法。

2. 解析请求参数

get请求app.get('/',

function(req, res, next) {

var querys = req.query || {}; //获取get请求的请求参数

var query = req.originalUrl; //获取请求url

res.send('hello world');

});

post请求app.post('/',

function(req, res, next) {

var body = req.body; //获取post请求的请求参数

var query = req.originalUrl; //获取请求url

res.send('hello world');

});

响应请求res.send([body | status], [body])方法用于返回信息,status默认为200,例如

res.send({});

res.send([]);

res.send("");

res.send(404, '{"errno":"10001", "errmsg":"访问页面或者接口不存在!"}')

与数据库交互

1. 与数据库建立连接connection = mysql.createConnection({

host: '',

user: 'root',

password: '******',

database: 'test'

});

connection.connect();

2. 执行sql语句connection.query("sql",[params], function(err, result, fields){});

例如var table = "table"; //要查询的数据表

var query = "/test"; //path参数

var sql = 'select content from ' + table + ' where path = ' + '"' + query + '"';

connection.query(sql,

function(err, result, fields) {

if (err) {

//失败,执行异常处理

} else {

//成功,返回请求信息

var firtRow = result[0] || {}; //result为数据库检索结果

}

});

再如var table = "table"; //要查询的数据表

var params = ["/test", "post", "1"];

var sql = 'UPDATE ' + table + ' SET path = ?, sendtype = ?, WHERE id = ?';

connection.query(sql, params,

function(err, result) {

if (err) {

//失败,执行异常处理

} else {

//成功,返回请求信息

}

});

注意:数据库检索结果是以键值对的形式返回的,例如'select content from table where id=1'//返回的结果信息为"content":"testcontent"

从数据库获取信息之后需要进行处理才能返回到客户端。

3. 断开连接connection.end();

每次执行sql语句之后,最好断开与数据库的连接,下次再执行的时候再重新建立连接。

补充:node 的mysql模块有问题,当一个连接断开的时候,立刻去建立连接,这样循环多次会造成连接创建失败;解决方法有2个,连接不断开,也不需要每次重新建立连接;或者换一个模块,不用mysql。

注:

Express 是一个简洁而灵活的 node.js Web应用框架, 提供一系列强大特性帮助你创建各种Web应用。

Express 不对 node.js 已有的特性进行二次抽象,我们只是在它之上扩展了Web应用所需的功能。丰富的HTTP工具以及来自Connect框架的中间件随取随用,创建强健、友好的API变得快速又简单

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值