Tag: restify

node.jspipe道restify http客户端响应

我有这个确切的问题,除了我使用restify HttpClient: node.js写入http响应stream 为了清楚起见,我试图做到这一点: var client = restify.createClient({ url: "http://www.google.com" }); client.get("/", function(err,res) { res.pipe(process.stdout); }); 它挂起几秒钟,但从不写入任何标准输出。 显然,我正在尝试获取比谷歌的主页,但例如…

限制暴露其他文件的静态服务

我正在使用节点的restify来创build一个简单的API。 我想要一个目录/public目录,人们可以简单地浏览到该目录并下载他们浏览的文件。 为了做到这一点,我用在/routes/public.js : server.get(/\/public\/?.*/, restify.serveStatic({ directory: __dirname + '/../' })); 因为我的文件结构是这样的: index.js /routes public.js /public files to be served 不过,我注意到一个很大的安全问题。 通过浏览http://domain.com/public/../index.js可以下载源代码! 显然,我不希望这种情况发生。 这是一个权限的工作,还是有什么我应该做的? 谢谢

testing使用SinonJs和Mocha来限制包含Promise Code Block的Route Handler

我有一个restify行动代码块如下: function retriveAll(req, res, next) { db.user .find({where: {id: 1}) .then(function(user){ res.send(user); }) .catch(function(details){ res.send(details.message); }) .finally(function(){ next(); }); } 我想testing这个动作,具体validationres.send()在这个代码块中被调用 。 稍后validationres.send()返回的数据。 我正在使用SinonJs和Mocha进行testing框架。 以上是上述方法的示例testing代码块。 describe('retrieveAll()', function() { reqStub = {}; resStub = {send: sinon.stub()}; nextStub = sinon.stub(); beforeEach(function() { module.retrieveAll(reqStub, resStub, nextStub); }); // this doesn't work // and the sub.calledCount is 0 // […]

NODEJS:如何用Restify读取Body参数?

我是Node / Restify的新手,在这里一定是错过了一些愚蠢的东西,但是我一直在这个问题上徘徊。 希望有人能帮助。 我试图用restify从POST请求读取Body参数。 我发现的一切似乎表明,我所需要的是server.user(bodyParser()),但它不工作,我不知道为什么,我不知道如何进一步排除故障。 任何人都可以帮我指出我在这里做错了什么吗? 我创build了一个简单的服务器如下: var restify = require('restify'); var server = restify.createServer(); server.use(restify.bodyParser()); server.post("/test", function(req, res){ console.log(req.params); console.log(req.body); res.send(200); res.end(); }); server.listen(8081); 然后我运行下面的POST请求: POST /test?GET_PARAM=def HTTP/1.1 Host: localhost:8081 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Connection: keep-alive Content-Length: 33 POST_PARAM1=abc&POST_PARAM2=ghi 这会在控制台中产生以下结果: debugger […]

当我的代码出现错误时,如何从restify获取堆栈跟踪?

比方说,我已经定义了以下restify端点: server.get('/test/1', function (req, res, next) { undefinedFunctionCall(); // Will cause exception return next(); } 我怎样才能得到我的服务器控制台的堆栈跟踪,告诉我, undefinedFunctionCall是未定义的? 客户端得到它,但不是服务器。 我已经阅读了文档 ,你可以听到事件InternalServerError和InternalError ,但是当我testing时没有任何的火灾。 我必须做什么? 码: server.on('InternalServerError', function (req, res, err, cb) { console.log('INTERNAL ERROR!'); // Never executed return cb(); }); 我在Windows 10的节点0.10.33上运行Restify 4.0.0

在服务器端支持图片上传吗?

我正在尝试创build一个REST API服务器,可以接受图像上传与node.js restify。 我查看了http://restify.com/上的文档,但无法确定restify是否支持将图像上载为服务器。 在服务器端支持图片上传吗? 如果不是,哪个node.js模块可以用来做图像上传服务器?

node.js请求和restify客户端有什么区别?

两者似乎都有类似的目的。 我正在使用restify服务器作为REST API服务器。 这是否意味着我更喜欢使用客户端? http://restify.com/#client-api https://www.npmjs.com/package/request

在post API中redirect错误

我正在使用node.js restify和passport模块,restify-ensure-login模块执行用户loginauthenticationfunction。 https://www.npmjs.com/package/restify-ensure-login 这里是相关的代码; var passport = require('passport'); var Strategy = require('passport-local').Strategy; passport.use(new Strategy( function(username, password, cb) { db.users.findByUsername(username, function(err, user) { if (err) { return cb(err); } if (!user) { return cb(null, false); } if (user.password != password) { return cb(null, false); } return cb(null, user); }); })); passport.serializeUser(function(user, cb) { cb(null, user.id); }); […]

restifyfile upload – 500错误,套接字closures

我使用restify api上传文件。 它给了我一个错误, { "code": "InternalError", "message": "This socket is closed." } 读取的API仍然很好,但无法上传图像。 可能的问题是什么? 我正在使用的代码, exports.uploadfile = function (req, res, next) { var file_name = req.files.image.name; var file_name_arr = file_name.split('.'); var imageExtension = file_name_arr.pop(); var imageName = Date.now()+"."+imageExtension; var newPath = process.cwd() + "/images/" + imageName; fs.readFile(req.files.image.path, function (err, data) { fs.writeFile(newPath, data, function (err){ […]

使用angular度转换处理API错误的最佳做法

我有一个API <> SPA架构。 但我不知道在哪里翻译,特别是当发送错误。 我宁愿只在我的angular度应用程序翻译文本(i18n等)。 API只能发送英文文本。 但我不知道如何 想象一下这样的错误消息:(nodejs + restify) server.get('/api/', function (req, res, next) { return next(new server.errors.UnauthorizedError('You are not authorized')); }); 这将发送一个401与json的身体。 如果API只会说英文,那么我怎样才能在SPA上翻译呢? 我怎么能把这个翻译方法之一: <span>{{message | translate}}</span> 要么 <span>{{lang.message}}</span> 当然,我使用Angular的$ translateProvider,并且在其中有一个定位文件。 有没有其他的方式发送语言键? 喜欢这个: server.get('/api/', function (req, res, next) { return next(new server.errors.UnauthorizedError('NOT_AUTHORIZED_ERROR')); }); 有了这个我可以有一个locate-en.json文件,如: { errors: { NOT_AUTHORIZED_ERROR: "You are not authorized" } […]