Tag: restify

RESTIFY不提供来自子目录的静态文件

我正在尝试使用下面的代码restify静态文件。 app.get(/.*/, restify.serveStatic({ directory: __dirname + '/public', default: 'index.html' })); 调用GET /或GET /index.html按预期工作。 调用公共的子目录中的任何文件不起作用。 例如,调用GET /css/style.css会导致404错误。该文件存在但未被提供。 有任何想法吗?

在Restify中res.send()事件之后?

我正在尝试将Bugsnag添加到我的Node Restify服务中。 我们已经有很多的路线,所以我试图不添加Bugsnag调用我们的代码库,我也试图做一些全球性的东西,所以没有错误,开发人员忘记添加错误报告。 从概念上讲,我希望在任何res.send() 之后获得状态码。 如果statusCode> = 400,我想通过调用Bugsnag.notify来通知Bugsnag.notify 。 我已经检查到处都是错误,所以没有任何错误显示给客户端(浏览器,电话等),但是他们确实发送了,例如res.send(401, { message: 'You dont have permission to do that' })我希望能够挂钩和通过谁试图做到这一点,什么路线等问题是我无法得到after火灾: server.on('after', function (req, res, route, error) { console.log('AFTER') }); 我想我误解了after事情。 在定义任何路由或其他中间件( server.use )之前,它位于index.js的顶部。 我的通用代码结构如下所示: server.post('/foo', function (req, res, next) { FooPolicy.create(req, function (err) { if (err) return res.send(err.code, err.data); FooController.create(req.params, function (response) { res.send(response.code, response.data) […]

创buildrestify createJsonClient

试图为我的restify服务器写一些摩卡testing。 一些服务需要授权标题。 我想这样设置: var client = restify.createJsonClient({ version: '1.0.0', url: 'http://localhost:9000', headers: {Authorization:'Bearer ' + global.access_token} }); 但检查请求头显示它没有得到设置,并且我的testing由于凭据无效而失败。 在这里阅读,我相信我有标题选项。 http://restifyjs.com/#jsonclient global.access_token被正确设置。 有人可以帮助一些关于如何设置标题的选项吗? 谢谢

在某些REST API上select性启用HTTP基本authentication

我正在使用node.js restify来构build一个REST API服务器。 我已经将HTTP基本身份validation添加到REST API。 但是,我只想要一些选定的API进行身份validation。 目前,所有的REST API都必须经过authentication。 启用HTTP基本authentication的代码; server.use(restify.authorizationParser()); function verifyAuthorizedUser(req, res, next) { var users; users = { foo: { id: 1, password: 'bar' } }; if (req.username == 'anonymous' || !users[req.username] || req.authorization.basic.password !== users[req.username].password) { // Respond with { code: 'NotAuthorized', message: '' } next(new restify.NotAuthorizedError()); } else { next(); } […]

restify.js路由与参数的端点冲突

我的代码如下所示: server.get('/currency/:code', currency.find); server.get('/currency/rates', currency.rate_getall); 每当我尝试到达端点,服务器将假设我将parameter passing给“/ currency /:code”路由。 我怎样才能解决这个问题? 谢谢。 瑞安

req.url不显示完整的url

我使用Restify,由于某种原因,req.url只显示第一个查询参数的URL。 req.query也只显示queryStartDate。 http://localhost:6001/myapp/v1/filter/path1/path2/v4.0/mhs/query/path3/path4/path5?queryStartDate=19000101&queryEndDate=21000101&requestSource=source&includeSources=1&excludeSources=2 码: //Breakpoint in my first handler: HttpHandlers.prototype.readHttpRequest = function (req, res, next) { req.locals = {}; res.locals = {}; … var httpHandlers = new HttpHandlers(); server.get('/hello/:name', httpHandlers.readHttpRequest );

在字符8192中插入的随机逗号在python“json”结果中调用node.js

我是一个刚刚学习python的JS开发人员。 这是我第一次尝试使用节点(v6.7.0)和Python(v2.7.1)在一起。 我正在使用python-runner作为我的python virtualenv的桥梁。 我的python脚本使用RAKE NLP关键字提取包。 我无法弄清楚为什么我的server.js中的返回数据在字符8192处插入一个随机逗号,并且大致为倍数。 除了地点以外没有其他的模式。 有时它在对象密钥string的中间,而在逗号分隔对象对之后的其他时间。 这完全破坏了返回数据上的JSON.parse()。 下面的示例输出。 当我从python shell运行脚本时,这不会发生。 我真的不明白为什么会这样,任何有经验的开发者都有什么想法? 在浏览器中输出示例 […, {…ate': 1.0, 'intended recipient': 4.,0, 'correc…}, …] 在python shell中输出样本 […, {…ate': 1.0, 'intended recipient': 4.0, 'correc…}, …] 对于下面的文件中的对象转换和处理有所不同。 该代码已被简化以显示问题 server.js var restify = require('restify'); var py = require('python-runner'); var server = restify.createServer({…}); server.get('/keyword-extraction', function( req, res, next ) { […]

在请求正文中parsingXML

使用Restify ,我们希望在主体中接收到带有XML的POST请求。 我正在使用server.use(restify.bodyParser())来parsing请求的主体,但请求来与Content-Type: application/xml ,我不是100%确定这是处理的最好方法它。 myRestifyServer.post('/my/place/to/post/to', function (req, res, next) { var xml = req.body; // ? var myObject = myFavouriteXmlParser(xml) // and so on… }) 然而,req.body似乎包含和对象与一个type属性和一个data属性 – 大概是bodyParser的默认行动,当它不知道如何处理。 是否有可能以某种方式扩展bodyParser来接受application/xml并将其解码,或者我需要创build一个新的插件来实现这个function?

如何在Restify中间件中捕获未处理的Promise拒绝?

我在Node.js上写了一个Restify应用程序 而我需要有一个函数,当Restifycallback中发生一些错误时会被调用。 这个函数应该发送一个响应给客户端。 如果我不使用承诺或asynchronous函数,我可以做这样的事情: server.on('uncaughtException', (req, res, route, err) => { log.error(err); res.send(err); }); 但是,如果我的callback是async函数,那么函数内的exception不会被调用,而是引发unhandledPromiseRejection 。 我如何重构我的代码,以便处理未处理的Promise拒绝,就像处理常见错误一样? 是的,我知道我可以检查Restify中间件本身的错误,但是它仍然会使代码更复杂,写起来更容易 if (!core.validateUUID(req.params.deviceId)) { throw new Error(`Device ${req.params.deviceId} is wrong`) } 然后 if (!core.validateUUID(req.params.deviceId)) { return next(new restify.InvalidArgumentError({ body: { success: false, error: `Device ${req.params.deviceId} is wrong`, } })); }

在Cloudfoundry'无效的ELF头部'

我正在部署一个node.js应用程序到Cloudfoundry,唯一的模块依赖关系是restify。 我试着用我的本地node_modules目录来推送它,并且在cloudfoundry.json中使用npm shrinkwrap和'ignoreModules',但是总是以stdout.log结尾: { stack: [Getter/Setter], arguments: undefined, type: undefined, message: '/var/vcap/data/dea/apps/myapp-0-6f9cf62f9bbe58f5d2eb13a94acb5d3a/app/node_modules/restify/node_modules/dtrace-provider/build/Release/DTraceProviderBindings.node: invalid ELF header' } 有任何想法吗? 提前致谢 :) 编辑:对不起,我的意思是“忽略* 节点 *模块”