Articles of restify

错误:invalid_request缺less必需的参数:范围(Restify&Passportjs w / Google OAuth2)

所以,我使用Restify和Passportjs(Google OAuth2策略)遇到了Node.js应用程序的问题。 当我使用passport.authenticate() ,它给我以下错误: 400.这是一个错误。 错误:invalid_request 缺less必需的参数:范围 几年前,我发现了另外一个同样的问题( 在Google Oauth2上使用Google Passportjs时,invalid_request丢失了:范围 )。 作者说他自己终于修好了,但没有发布修复。 有没有其他人遇到这个问题,并能够解决它? 我无法弄清楚。 这是我的代码: authController.js var passport = require('passport'); var GoogleStrategy = require('passport-google-oauth20').Strategy; var auth = { google: { clientID: '<ID>', clientSecret: '<SECRET>', callbackURL: 'https://localhost:8080/auth/google/return', scope: ['profile', 'email'] } }; passport.use(new GoogleStrategy({ clientID: auth.google.clientID, clientSecret: auth.google.clientSecret, callbackURL: auth.google.callbackURL }, function(accessToken, refreshToken, profile, cb) […]

无法通过互联网访问节点服务器

我有一个基本的restify节点应用程序。 它运行在具有静态IP地址的专用Windows服务器上。 这个服务器是由第三方build立的。 防火墙已configuration为将端口8000转发到此服务器。 我可以在本地很好地访问这个node-restify服务器。 我在Windows防火墙上设置了规则,允许通过端口8000的传入和传出TCPstream量 这是我的服务器创build和侦听代码: var server = restify.createServer(); server.listen(8000,'0.0.0.0', function() { console.log('%s listening at %s', server.name, server.url); }); 当使用localtunnel我可以访问服务器罚款。 我想弄清楚我的问题在哪里。 是我的node-restifyconfiguration导致这个问题,还是由第三方业务的Windows服务器的configuration?

调整通配符和通配符

问题:如何在accept-version头文件中指定通配符semvar? (Restify 2.5.0) 目标:接受1.xx查看文档,看起来这是通过将semver设置为〜1或1.x来实现的。 但是Restify似乎并没有处理这个问题。 服务器: var server = restify.createServer({ version: '1.1.0',… 路线: server.get({ path: /^\/([a-zA-Z0-9_\.~-]+)\/(.*)/, version: '1.x' // also tried '~1' }, function(req, res, next){ req.log.debug(req.params,'Request'); res.send(req.params); }); 结果: {"code":"InvalidVersion","message":"* is not supported by GET /sys/blah"} 我能够通过将routes version to '1.0.5'设置routes version to '1.0.5' (范围中的示例),然后指定clients accept-version to ~1来获得此工作,但是,似乎它更适合设置通配符服务器端。 有任何想法吗?

如何手动从节点应用程序上传文件到服务器

我有服务器处理file upload。 它处理内存中的文件。 处理完成后,我必须将file upload到下一个服务器。 我怎么能做到这一点? 我正在使用express处理file upload到第一台服务器,并restify客户端与第二台服务器进行通信。 所以我有这样的东西: app.post('/first-server',function(req,res,next){ var file_path = req.files.somefile.path; var param1 = req.param('param1') + 'modified'; var param2 = req.param('param2') + 'modified'; doSomethingWithFile(file_path,function(modified_file_stream){ // now I want to post file (stream) and modified params (param1 & param2) to second server }); });

客户是否在浏览器环境中使用Restify?

我对Restify客户的目的感到困惑: http://mcavage.me/node-restify/#JsonClient 它们本身是build立在Node.js上的,正如服务器位一样。 我是否认为它们并不打算在浏览器中使用? 他们真的是服务器到服务器通信吗? 如果是这样,那么人们如何实现他们的客户端(浏览器)JS代码来调用Restify API? 直接进行GET / POST / PUT / DELETE请求,还是使用其他工具?

nodejs,发电机表获取操作callback或asynchronous

伙计们,我正在编写一个从DynamoDB表中获取结果的API,并将JSON放回浏览器。 下面的代码工作,并返回所需的结果…但是,在阅读了asynchronous和callback后,它变得重要,我知道我是否应该以另一种方式写这个? 以下几百个并发的API调用程序能够很好地扩展吗? 这段代码似乎没有使用callback。 它是asynchronous的吗? var restify = require('restify'); var AWS = require('aws-sdk'); AWS.config.update({region: 'us-east-1'}); var db = new AWS.DynamoDB(); function myFunction(req, res, next) { var params = { TableName : 'myTable', KeyConditions : { "number" : { "AttributeValueList" : [ { "S" : req.params.simethingid } ], "ComparisonOperator" : "EQ" } } } db.query(params, function(err, […]

node.jscallback函数dynamodb

伙计们,我正在编写一个API函数,需要对后端DynamoDB表进行多次调用。 返回的JSON结果需要合并,然后作为单个响应返回给调用者。 我怎么会写这个,因为我似乎不完全写这个asynchronous… 到目前为止,我已经能够编写函数来进行一个调用,然后返回它。 我将如何编程第二个db.query? var restify = require('restify'); var fs = require('fs'); var AWS = require('aws-sdk'); AWS.config.update({region: 'us-east-1'}); var db = new AWS.DynamoDB(); module.exports = { license: function (req, res, next) { var params = { TableName : 'tableA', KeyConditions : { "myHashKey": { "AttributeValueList" : [ { "S" : "1" } ], "ComparisonOperator" […]

请确定如何创buildfilter来捕获请求和响应并进行logging

在我的restify服务器中,我有一个要添加filter的路由。 在Express中工作的方式(这在Express中工作)是response.on将我的处理程序添加为callback。 然后,在响应返回给请求者之前,我的处理程序将被调用。 这不是我在Restify中看到的行为。 我的猜测是我没有正确地注册我的处理程序的事件机器。 restifyServer.get({ path: "/api/v1/readings", version: ["1.0.0"]}, Reading.getReadings); 我添加一个处理程序: function zipkinTracing(request, response, next){ // handle the callback request and record the trace var trace = zipkin.getTraceFromRequest(request, "ids-api", {address: config.externalIP, port: 80}); if (trace){ zipkin.sendAnnotationReceive(trace); zipkin.sendAnnotation(trace, 'request.headers',JSON.stringify(request.headers)); trace.parentSpanId = trace.spanId; zipkin.sendAnnotation(trace, 'http.uri', request.url); var queryObj = urlLib.parse(request.url, true).query; Object.keys(queryObj).forEach( function(key){ zipkin.sendAnnotation(trace, key, queryObj[key]); […]

在Restify中使用testing数据库

我创build了一个简单的Restify服务器,并使用自己的JSONclient通过Mocha开始testing它的function。 当unit testingfunction时,可以设置指示testing设置的ENV var,并连接到相应的mongodb数据库。 但是,当使用JSONClient时,显然,testing已经连接的“运行”API服务器。 是否有任何方法通过开关数据库连接,通过客户端的端到端testingAPIfunction,以不覆盖开发数据库? 编辑:我想我可以添加一个方法沿着“switchDataConnection”的行,将切换到testing数据库,但感觉肮脏和哈克。

MEAN Stack – 仅在某些REST方法上使用带有express-restify-mongoose的jwt

我对这些东西都很陌生,所以请耐心等待。 我尝试使用MEAN堆栈来创buildREST API – 为了使事情变得简单,我试图使用这个: https://github.com/florianholzapfel/express-restify-mongoose 运行时,它对我来说是完美的工作: restify.serve(应用程序,酒店); – >应用程序当然是expression,酒店是我的mongoose.model指向我的酒店架构。 它也正在处理我的“令牌逻辑”,我可以使用类似下面的方法来保护所有restify的URL: 除非({path:['/ auth','/']})); 我的问题是 – 我如何保护一些REST方法与我的令牌逻辑(POST,PUT,DELETE)在例如'/ api / hotels' – >我想像GET这样的方法是公开的,但不是POST,PUT和删除。 可能吗? 非常感谢您的帮助!