Tag: restify

节点js在一个应用程序中使用express和restify

我正在使用restify构buildapis,它工作的很好。 但是我也需要在同一个应用程序中渲染一些网页。 有没有可能我可以在一个应用程序中使用快递和一起考虑? 这是app.js中的restify服务器的代码 var restify = require('restify'); var mongoose = require('mongoose'); var server = restify.createServer({ name : "api_app" }); server.use(restify.queryParser()); server.use(restify.bodyParser()); server.use(restify.CORS()); mongoose.connect('mongodb://localhost/db_name'); server.get('/', routes.index); server.post('/api_name', api.api_name); server.listen(8000 ,"localhost", function(){ console.log('%s listening at %s ', server.name , server.url); }); 如何在同一个app.js中创buildexpress服务器? 谢谢

如何更改restify中的默认错误输出

有什么办法可以改变默认的错误输出吗? 说我要改变其余的错误输出: { "code": "InvalidArgumentError", "message": "blah blah…" } 至: { "code": 10001, "message": "blah blah", "extraMsg": "blah blah" } 以下是我的一些想法: 收听错误事件。 似乎并非所有的RestError都发出了额外的事件(如NotFound,MethodNotAllowed,VersionNotAllowed … do)。 所以我不能抓住所有的错误来重写它们。 在发送响应数据之前收听事件。 我查阅了官方文件,发现没有什么亲戚。 修改RestError类的实现。 那显然不是一个好方法。 任何其他的想法?

Node.js +用RESTIFY提供静态文件

我有一个网站中的.html,.js,.png,.css等文件的多级集合。 在我的网站hiearchy偷看看起来像这样: index.html child1 index.html page1.html page2.html … child2 grandchild1 index.html grandchild2 index.html index.html page1.html page2.html resources css myTheme.css img logo.png profile.png js jquery.js … … 我正在迁移这个在Node.js下运行。 我被告知我必须使用RESTIFY。 目前,我为我的服务器写了以下内容: var restify = require('restify'); var fs = require('fs'); var mime = require('mime'); var server = restify.createServer({ name: 'Demo', version: '1.0.0' }); server.use(restify.acceptParser(server.acceptable)); server.use(restify.queryParser()); server.use(restify.bodyParser()); server.get('/', loadStaticFile); […]

如何使用Restify从请求对象获取客户端IP?

我很难find如何从路由访问REST客户端的IP地址。 server.get('api/foo', function(req, res, next) { // How can I access the IP address of the requester from here? }

Node.js使用socket.io来调整

是否有可能在像express和socket.io一样的端口上运行socket.io&restify? 我只是喜欢这个,但没有奏效 # server.coffee restify = require 'restify' socket = require 'socket.io' server = restify.createServer() io = socket.listen server server.listen 1337 当我尝试连接到socket.io时: GET http://localhost:1337/socket.io/socket.io.js 404 (Not Found)

dynamic删除处理程序在restify

上下文 我正在尝试使用restify (2.6.2)构build一个dynamic服务器,服务器启动后将安装和卸载服务。 我意识到这可以被看作是一个奇怪的东西,但它在一个面向DSL的项目的背景下是有意义的。 为了实现这个目标,我实现了以下function: var install = function (path, method, handler) { var id = server[method](path, function (request, response) { // [1] handler (request, response); }); return id; } var uninstall = function (id) { delete server.routes[id]; // [2] } 安装函数在由path和方法名称[1]指定的路由中安装处理程序。 卸载函数,通过从路由中删除处理程序来卸载处理程序[2]。 以下代码将此function公开为服务: var db = … var server = restify.createServer () .use (restify.bodyParser […]

调整中间件 – 正确调用堆栈中的下一个中间件

我正在使用Restify与Nodejs,我有一个正确的方式将控制返回到堆栈中的下一个中间件的问题。 我希望当我说“堆栈中的下一个中间件”时使用正确的短语。 基本上,我的代码如下所示: //server is the server created using Restify server.use(function (req, res, next) { //if some checks are a success return next(); }); 现在,我想知道的是该代码应该return next(); 或者应该只是next(); 把控制权交给下一个堆栈? 我检查了两个工作 – 这两个代码块将成功地传递控制权,并按预期返回数据 – 我想知道的是,如果两者之间存在差异,并且如果我需要使用另一个。

为restify.js实现基于令牌的身份validation的最佳方式是什么?

我正在尝试使用restify.js构build一个RESTful API,但我不想将API暴露给所有人。 我将使用基于令牌的身份validation。 我脑海中的过程就是这样,我不确定这是否合理。 用户发送用户名/密码到一个API来获取令牌。 这个令牌应该包含在每个其他API调用的请求中。 如果这是合理的,是否有任何node.js库我可以使用? 另外,我如何保护令牌? 如果有人用令牌拦截了一个http请求,那么这个人将得到api URL和令牌。 然后他可以根据需要发送请求。 有没有办法避免这种情况? 非常感谢!

如何避免在清除gc期间快速增加内存?

我有一个build立在restify上的应用程序。 我没有内存泄漏,但是在清除gc的时候我有很大的内存增长,于是重力扫描gc并清理内存。 它影响我的应用程序的性能。 [2268] 266859 ms: Scavenge 61.5 (119.5) -> 46.0 (119.5) MB, 2.2 ms [allocation failure]. [2268] 267084 ms: Scavenge 63.7 (119.5) -> 48.3 (119.5) MB, 6.2 ms [allocation failure]. [2268] 267289 ms: Scavenge 66.0 (119.5) -> 50.6 (119.5) MB, 2.6 ms [allocation failure]. [2268] 267504 ms: Scavenge 68.3 (119.5) -> 52.8 (119.5) MB, […]

不调用next()的后果

我一直在使用Restify一段时间。 我碰到了一些缺lessnext()代码,我想我不知道我是否完全理解在res.send()之后应该调用next()的原因。 我得到为什么会在中间件的情况下使用它,但是对于一个正常的路由,为什么它需要? 例如: server.get('/a/:something/',function(req,res,next) { res.send('ok'); }); VS server.get('/b/:something/',function(req,res,next) { res.send('ok'); return next(); }); 如果return next(); 被排除在代码之外,它似乎不会导致错误,并从我能看到的东西开始工作。