节点js中的REST API在10次请求后没有响应
REST API in node js does not respond after 10 request
我在node-js项目中实现rest API时遇到了麻烦。目前我已经成功实现了rest API,但当我10次请求任何Web服务时都会出现问题。它不会从节点服务器作出响应。
请帮忙??。。提前谢谢。
谢谢你的重播。这是我的网络服务代码。实际上,我并没有在nodejs中使用任何期望表达的特定rest框架。代码:
router.route('/changePassword').post(function(req,res){
var authkey = req.body.authkey;
var oldpassword = sha1(req.body.oldpassword);
var password = sha1(req.body.newpassword);
var organizationid = req.body.organizationid;
var userid = req.body.userid;
connectionpool.getConnection(function(err, connection) {
if (err) {
console.error('CONNECTION error: ',err);
res.statusCode = 503;
res.send({
result: 'error',
error: err.code
});
} else {
connection.query('SELECT organizationid FROM authenticationkey WHERE authenticationkey = "'+authkey+'"', function(err, result) {
if (err) {
res.statusCode = 500;
res.send({status: '0',err: err.code});
}
if(result.length > 0){
connection.query('SELECT userid FROM users WHERE password = "'+oldpassword+'" AND organizationid = "'+organizationid+'" AND userid = "'+userid+'"', function(err, result) {
if(result.length > 0){
var update = {
password:password
};
connection.query('UPDATE users SET ? WHERE userid = ? AND organizationid = ?',[update,userid,organizationid], function(error, row) {
if(row){
res.send({
status: '1',
message: 'Password changed successfully.'
});
}else{
res.send({
status: '-1',
message: 'Password is not changed...please try again.'
});
}
});
}else{
res.send({
status: '-2',
message: 'Your old password is incorrect.'
});
}
//connection.release();
});
}else{
res.send({
status: '0',
error: 'Authentication key is invalid.'
});
}
});
}
});
});
结束这也是我的路线配置,我正在使用的url
var express = require('express'),
router = express.Router(),
bodyParser = require('body-parser'); //parses information from POST
var cn = require('./../db');
var connectionpool = cn.open();
var sha1 = require('sha1');
var http = require("http");
// for file upload
var fs = require('fs');
var path = require('path'),
// Get parent directory
directory = path.dirname(module.parent.filename);
var parent = path.resolve(directory, '..');
var uploaddir = parent + (path.sep) +'images' + (path.sep) + 'users' + (path.sep);
var thumbdir = parent + (path.sep) +'images' + (path.sep) + 'users' + (path.sep)+ 'thumb' + (path.sep);
var imageurl = "/images/users/thumb/";
var dirpath = "/images/users/";
我的猜测是您正在使用node-mysql
连接池(请在您的问题中提及)。
文件说明:
当您完成连接后,只需调用
connection.release()
,连接就会返回到池中,准备供其他人再次使用。
你似乎没有释放从池中获得的连接(事实上,它在某个时候被注释掉了)。
此外,池选项文档指出:
connectionLimit
:一次创建的最大连接数。(默认值:10
)
由于您不会在任何地方释放连接,因此在10次请求后,对connectionpool.getConnection()
的后续呼叫将等待连接可用。从来没有,因为你没有释放他们。
此外,您的代码很容易受到SQL注入的影响(authkey
、organizationid
和userid
是在未设置脚本的情况下传递的)。您需要正确地转义所有用户提供的输入,或者使用占位符。
相关文章:
- 如何发送作为节点请求响应函数中的代码块的响应
- 如何将请求响应传递给另一个请求
- 跟踪循环中触发的请求-响应
- Flux+Rreact.js-缓存API请求响应
- 对 Expressjs / Nodejs 请求 - 响应处理感到困惑
- 用于忽略先前请求响应的前端 JavaScript 模式
- AJAX 调用从我的 REST API 收到“400 错误请求”响应
- 如何为每个 AJAX 请求/响应事件添加回调
- 在 Phonegap 应用程序中,如何指示正在发生对服务器的请求/响应
- Python - 解析请求响应
- 图形 API 嵌套请求响应
- 为什么 AngularJS 指令适用于硬编码值,但使用 http 请求/响应失败
- 如何获取ajax请求响应中存在的图像的位置,并使用位置绘制线
- NodeJS如何在net模块中实现请求/响应
- Node.js编写http请求响应
- 在这样一个请求-响应周期中加载多个JavaScript
- Angular.js请求/响应Node.js
- 为什么在CasperJS中POST请求响应数据为空,即使相同的请求在Postman中显示数据
- 如何避免POST请求响应未知事件码
- AJAX——可以在请求响应上标记到前一个响应的末尾