Tag: rest

nodejs express – 大块在res.on('data')中logging两次

我在nodeJS中遇到了一个问题,就像我看到的那样依赖于asynchronous,但是我无法处理它,而且我没有find解决具体问题的解决scheme。 我目前正在实现一个服务器每隔x秒轮询来自另一个服务器的数据。 然后,我使用外部服务器响应的数据块,这是一个JSONstring,接收必要的实时数据,然后parsing并保存到我的mongoDB。 问题是这个块有时会很长,因为服务器有时会传输很多行。 因此,有时我的工具已经工作,只要块不是太大,但有时它不。 logging块后,我注意到在这些情况下,块被logging两次。 例如,如果res.data看起来像这样:[1,“123”] [9,“234”](实际上它当然要大得多)我logging: 大块:[1,“123块”] [9,“234”] 这破坏了我的var response ,然后是response: "][9,"234"] 。这里是代码的重要部分: function pollUra() { var response = ''; var deferred = Q.defer(); // Send a request to URAv2 var req = http.request(options, function (res) { res.setEncoding('utf-8'); res.on('data', function (chunk) { // We need to set response to null here, because if […]

使用Express.js Node.js标头(cURL)中的令牌

所以,我想在我的项目中使用这个代码: var allowCrossTokenHeader = function(req, res, next) { res.header("Access-Control-Allow-Headers", "token"); }; 但它不起作用,服务器挂起,不起作用,如果我评论这个代码服务器工作正常。 我需要在每个请求中检查一个令牌给我的RESTful API,任何想法怎么办?

发送httppost请求到Bluemix部署的Node.js应用程序时,“不幸的是应用程序已经停止”错误

我正在创build一个Android应用程序,但使用httppost方法向Bluemix部署的Node.js服务器发送参数时,出现“不幸的应用程序已停止”错误。 有谁能帮我解决这个问题吗? 我有查询,无法从Node.js收到门票链接的响应: 我无法将我的请求参数发送到bluemix部署的node.js Jave代码如下: package com.example.rest; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import android.support.v7.app.ActionBarActivity; import android.app.Dialog; import android.content.SharedPreferences; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Adapter; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; […]

如何防止在Express中使用REST API调用中冲突的关键字

如果我正在为应用程序创build一个REST API,那么就我所知,path定义的顺序很重要。 例如,如果我按照以下顺序编写我的路线: app.get('/users/:username', user.get); app.get('/users/list', user.listAll); 那么user.listAll永远不会被访问到,并且当向/ users / list发出请求时,服务器会将“list”分配给username参数。 所以很明显你想要颠倒这些路线的声明顺序。 但是在这里,如果用户使用用户名'list'创build一个帐户,我们会遇到同样的问题,对吧? 那么如何防止用户使用“关键字”创build名称,这里的关键字定义为与api路由冲突的string。 我可以想到两种方法,但都不令人满意。 首先,你可以保留一个黑名单string,你比较每个用户名创build。 但保持这将是一场噩梦。 而且,只需在数据库中预先创build这些用户(只要用户名是唯一的)即可。 这种做法看起来有点不好意思,但我想不出有多less反对意见。 有没有简单的解决这个问题?

REST节点服务器有时运行两次代码

好吧,这似乎有点奇怪。 但是我有一个运行我的REST API的Node服务器。 我从我的angular度应用程序调用API ,但有时如果我只是留在同一页上最后一个已知的请求执行多次。 我开始以为这只是一个问题,但是现在我经历了很长一段时间以后,我发现它不pipe我的应用程序在哪个页面上。 有趣的是,在我的前端控制台(Chrome)中,调用并没有被执行多次。 我的API包含了很多路由文件,但主要的结构如下所示: Server.js // BASE SETUP // ============================================================================= var express = require('express'), bodyParser = require('body-parser'); var app = express(); var router = express.Router(); var es = require('express-sequelize'); var multer = require('multer'); var Excel = require("exceljs"); var ex = require('xlsjs'); var stream = require('stream'); var fs = require('fs'); var XLSX […]

通过requestJS POST请求发送JSON对象和图像文件的数组

我正在使用NODEjs构buildREST API,使用Express路由器和Multer中间件来处理多个主体数据和文件。 我的端点路由127.0.0.1/api/postData期望:带有字段的json数据,其中之一是json对象数组(我有嵌套mongoose模式)和2个命名图像(png / jpg)。 我需要通过cURL发送Post请求与以下5对象的数据结构: name String description String usersArray Array of json objects like: [{"id": "123"}, {"id": "456}] imgIcon Png/Image providing /path/to/imageIcon.png imgHeader Png/Image providing /path/to/imageHeader.png 任何想法如何写request.js节点http请求库的帮助下请求库?

Node.js对象实例化是否为每个用户创build一个对象?

所以我正在学习这个教程 ,学习如何在Node.js中创build一个RESTful API,其中一部分突然让我有点担心。 在应用程序中实例化对象以处理称为TaskRepository()的RESTful请求。 根据与教程相关的Gist ,您将看到以下代码片段: var taskRepository = new TaskRepository(); 我的问题是,这将实例化每个用户一个TaskRepository()对象? 在这种情况下,如果交通stream量足够高,是不是有机会跑出内存? 这里最好的做法是什么? 此外,如果是这样的话,你将如何绕过它以避免未来的交通拥堵?

从节点(服务器到服务器)Node / Express使用请求中获取来自Restful API的数据

我试图连接到位于这里的TradeGecko API :(他们所有的例子都是在ruby – 我使用节点) http://developer.tradegecko.com/ 我有一个特权访问令牌,我创build了FAKE TOKEN:146e29b59e7e8861f462101f610f58168ca5edf2f307e5f7adc3314d24ee8015 如何获得所有产品的GET请求,例如: http : //developer.tradegecko.com/?ruby#list- all-products 非常感谢帮助! 假设我有这样的代码: var express = require('express'); var request = require('request'); var app = express(); var port = process.env.PORT || 3000; var testRouter = express.Router(); myRouter.route('/testRoute') .get(function(req, res){ request('API CALL HERE??', function (error, response, body){ if(!error && response.statusCode == 200){ res.json(body); } }) […]

PassportJS + RestAPI + SPA

我使用ExpressJS来构buildRestAPI,客户端是SPA,并且通过PassportJS支持通过Google / FaceBook / GitHub / …进行身份validation。 我的问题,从社交logincallback将返回到RestAPI或SPA? 如果系统返回到RestAPI,那么如何将redirect到SPA上的主页。 另一种情况是,如果系统callbackSPA,RestAPI如何从客户端接收和validation令牌。 请让我知道常用的方法。 谢谢,

如何预先填充使用Docusign的REST API从模板创build的信封中的字段?

注意:我使用的是“经典”体验,因为新界面没有办法让模板为将来的签名人设置必填字段。 工作stream程: 有一堆领域的模板 使用api: 从模板创build一个信封/文档,并分配一个新用户签名(这个文档将是一个注册服务的协议) 创造新的angular色 将roleName设置为模板上的伪造签名者(因为我无法configuration在模板上没有至less一个签名者的字段) 添加textTabs来尝试填充一些字段。 检索收件人 创build一个收件人视图,以便我可以将url放入iframe 这是一种令人厌恶的行为,因为我不在意第一个签名者是否是注册服务的用户。 然而,我会喜欢在签名后将文档复制到某个人,但是docusign似乎不支持这个(反正我find了)。 这里是创build信封的node.js代码(我认为我的API用法出错了): function createEnvelopeDefinition(templateId, userData) { var envDef = new docusign.EnvelopeDefinition(); envDef.setEmailSubject('Signup Agreement'); envDef.setTemplateId(templateId); var tRole = new docusign.TemplateRole(); tRole.setRoleName('RoleOne'); tRole.setName(userData.fullName); tRole.setEmail(userData.email); tRole.setClientUserId('2'); tRole.setTabs(new docusign.Tabs()); tRole.getTabs().setTextTabs([]); const fieldsToPreFill = [ 'field1', 'field2', 'field3', 'field4']; fieldsToPreFill.forEach(fieldName => { let textTab = new docusign.Text(); let value […]