Tag: restify

Node.js,Express和Mongoose:自动CRUD API

来自Python世界,我们大量使用tastypie或Django-Rest-framework来创buildRest API。 通过从FelixGeisendörfer 向老板道歉,我注意到以下陈述: 构build轻量级REST / JSON API是node.js真正发挥的作用。 与JavaScript结合的非阻塞I / O模型使其成为封装其他数据源(如数据库或Web服务)并通过JSON接口公开它们的绝佳select。 当我尝试学习Node.js并find使用现有的可靠模块(如用于Django的tastypie)来实现REST API的最佳方法时; 我只是无法find一个node.js模块来处理这些动作(GET,PUT,POST,DELETE,PATCH)的基础上,一个模型automaticaly。 你会发现很多教程,说如何实现一个基本的restapi,但我没有find模块准备在大型的生产应用程序中使用。 (我发现Restify , mers …) 你们在用什么? 现有的模块,或者您更喜欢开发自己的控制器来处理这些任务,并手动创build自己的路线?

在bunyan多个日志path

我使用Bunyan与Restify创build一个access.log,它将存储有关端点,状态码等请求的信息…但是,我想从这个文件中分离错误并将它们存储在一个单独的日志文件。 我已经尝试通过向Bunyanlogging器实例添加额外的stream来创build第二个错误logging器,但是错误不会写入错误日志文件。 任何想法,为什么? var log = new Logger({ name: 'logga', streams: [ { stream: process.stdout, level: 'debug' }, { path: './logs/access.log', level: 'trace' }, { path: './logs/error.log', level: 'error' } ], serializers: Logger.stdSerializers }); server.on('uncaughtException', function (request, response, route, error) { log.error(error); });

在res.end()之后Restify(Node)连接没有closures

我们有一个Node / Restify应用程序,我遇到了这个问题(有些代码已经被省略了,所以请忽略缺less的标识符): server.post('/report', requireAuth, function (req, res, next) { generateReport(err, result, extension, contentType) { // Filename for the report var filename = 'Report_' + moment().format('YYYY-MM-DD_HH:mm:ss') // Output the result directly with a lower-level APIs res.writeHead(200, { 'Content-Length': Buffer.byteLength(result), 'Content-Type': contentType, 'Content-Disposition': 'attachment;filename='+filename+'.'+extension }) res.write(result, 'utf8') res.end() console.log('ended') return next() } }) 问题是,在发送输出之后,即使我调用res.end(),与客户端的连接也不会closures。 (res只是标准HTTP ServerResponse模块的一个包装)。 […]

如何使用restify上传文件

我试图上传图像文件rest服务器(Confluence更具体)使用Restify模块,但得到断言错误。 我不确定是否使用正确的方法将file upload到REST服务器。 任何人都可以指出我正确的方向吗? 这是我的尝试 – var restify = require('restify'); var header = {'Authorization': 'Basic xxxxx', 'content-type': 'multipart/form-data'}; var client = restify.createJsonClient({ url: 'http://www.testsite.com', version: '*', headers: header }); var image = "c:\\Users\\abc\\Documents\\bbb.jpg"; var fileStream = fs.createReadStream(image); var stat = fs.statSync(image); var size = stat["size"]; var param = "?pageId=123&filename=mynewimage&mimeType=image%2Fjpeg&size=" + size; fileStream.pipe( client.post("/plugins/drag-and-drop/upload.action"+param, function(err, req, […]

最好的方法来转发上传stream

我正在编写用NodeJS编写的REST服务器脚本。 此脚本允许用户执行POST请求上传文件。 由于我的服务器不负责存储文件,并由另一个也是REST服务器的远程服务器负责,我喜欢将file uploadstream转发/redirect到该远程服务器。 什么是最好的方法来做到这一点? 我应该缓冲stream,并等待,直到我收到文件的全部stream式传输到远程服务器之前? 要么 我应该只是将数据块传输到远程服务器,因为我收到它们? 我试着用我的上传路线pipe道, req.pipe(request.post(connection).pipe(res) 但是我从远程服务器收到错误 – “连接已被客户端取消”。 要么 是否有可能将传入的上传streamredirect到远程服务器,以便我的脚本不会是中间人? 谢谢

无法使用restify设置localhost https服务器

我试图在本地主机上运行restify https服务器,但我不断收到“0 NO RESPONSE”。 我试图按照与node,https,localhost等相关的关键字find所有的例子(所有的例子都非常相似和简单,几乎没有错)。 还检查了收听端口的应用程序,但它仍然是“0 NO RESPONSE”。 如果我删除服务器代码上的httpsconfiguration,并将请求更改为http,那么一切工作正常。 这里可能出了什么问题? 编辑:我的代码是这样的 import restify from 'restify'; … const server = restify.createServer({ key: fs.readFileSync(path.join(__dirname, '..', 'key.pem')), certificate: fs.readFileSync(path.join(__dirname, '..', 'cert.pem')) }); … server.listen(443, function()…);

链接请求批准

我有以下代码不工作: var server = restify.createServer( … ); server .get('/', function(req,res,next){ res.send('server is up and listening'); }) .get('/test', function(req,res,next){ res.send('test route'); }) ; 像上面显示的链接在快递中对我有效。 我想知道如何达到restify,因为它使我的代码看起来更干净。 谢谢 :)

具有Restify和nodejs的多个子域

我正在使用Restify开发nodejs应用程序。 应用程序必须为应用程序提供一个API,一个基于angular度使用API​​的静态公共站点,另一个静态但私有的angular度站点,pipe理UI也会使用该API。 我已经设法为公共静态网站和API设置路由。 pipe理员给我头痛。 我需要在不同的子域中暴露pipe理员,例如: admin.mysite.com ,而api和公共站点则在www.mysite.com ( www.mysite.com的api)上提供。 这是我迄今为止configuration它: // restify route configuration for the public HTML site server.get(/^\/(?!api)/, restify.serveStatic({ directory: './client/', default: 'index.html' })); // restify route configuration for the API, using directory structure for route setup. routes(function(routes){ console.log(routes); routes.forEach(function(route){ server[route.method](route.route, route.handler); }); }); 我怎样才能configurationrestify服务,通过serveStatic ,pipe理的HTML用户界面在不同的子域在同一个nodejs服务器上?

哪种方式更好地把文件从服务器的亚马逊S3?

我想通过restify(或express)提供一个rest服务API, 服务的责任是让客户谁可以把audio/ MPEG或其他 二进制文件到我们的服务器,然后validation身份validation,如果 通过,将文件放到amazon s3上,然后检查s3客户端 响应statusCode,如果s3客户端响应statusCode == 200,那么 出头 解决scheme1 :使用请求streampipe道将文件放到亚马逊knox var stream = s3.put(filepath, {options}); serverReq.pipe(stream); stream.on('response', function(err, s3Res) { if (err) { console.log(err); } if (s3Res.statusCode == 200) { store file infos on DB} } 解决方法2 :使用formdiable和fs预先在服务器本地临时文件夹中存储文件,然后通过knox将文件放到amazon中 (after pre store file on server local temp folder) s3.putFile(sourcePath, destPath, {options}, function(err, _res) { […]

用摩卡testing二进制file upload

我目前正在研究一个带有nodejs的小API,并且要求通过接收一个二进制string来完成file upload。 我不知道该怎么做,是testing它与摩卡,所以我一直在做一些search,发现堆栈溢出unit testingfile upload与摩卡 ,它是一个很好的开始,但它不会工作,因为它发送一个多部分的forms,什么我要求客户端发送的api文件就是一个stream。 inheritance人我的控制器: exports.uploadVideo = function(req, res, next) { var video = "public/video/" + req.params.videoId + ".mp4", util = require('util'), exec = require('child_process').exec; var newFile = fs.createWriteStream("./uploads/" + video); req.pipe(newFile); req.on('end', function () { var cmd = 'qtfaststart ' + './uploads/' + video; var qtfaststart = exec(cmd, function(error, stdout, stderr){ if […]