Tag: rest

我怎样才能从一个长期的asynchronous过程接收实时更新?

我正在写一个小型的内部Web应用程序,读取表单数据并创build一个Excel文件,然后通过电子邮件发送给用户。 但是,我正在努力了解如何在完成过程时为用户实现实时更新。 有时这个过程需要10秒,有时这个过程需要5分钟。 目前,用户一直等到stream程完成,然后才能看到任何结果 – 当stream程正在完成时,他们没有看到任何更新。 在显示报告信息之前,前端等待来自服务器的201响应 ,并且用户被“阻止”,直到RC完成。 我很难理解如何asynchronous启动报告创build(RC)过程,同时允许用户导航到网站的其他页面。 或者看到在后台发生的更新。 我在此应该澄清一下,RC过程中的一些步骤使用Promises。 我想每秒轮询一次服务器,以获得正在生成的报告的更新。 这里有一些简单的代码来澄清我的理解: 端点 // CREATE REPORT router.route('/report') .post(function(req, res, next) { // Generate unique ID to keep track of report later on. const uid = generateRandomID(); // Start report process … this should keep executing even after a response (201) is returned. CustomReportLibrary.createNewReport(req.formData, uid); […]

如何:传递的REST API和键/值对的数组

我正在寻找实现传递的REST API和键/值对的数组的指导。 具体来说我的数据如下所示 [{0:1},{1:5},{7:2}…] “键”是一个60元素数组的索引。 该值表示几个枚举值之一。 该数组存储在数据库中,但由客户端维护。 数组条目数(数组长度)在运行时是已知的(即必须是可变的)。 在uri中代表这个的最好方法是什么? 而且,服务器将如何解码该参数? 这将通过GET和PUT请求来实现。 服务器是用Node.js编写的

Express路由将variables传递给所需的文件

我试图让所有我的控制器调用一个名为索引的文件,所以我不只是build立在一个文件中的所有快递路线。 因此我的index.js看起来像: //imports and stuff router.use('/auth', require('./auth')) router.use('/users', require('./users')) router.use('/:world_id/villages', require('./villages')) //export router 然后我有auth.js和users.js文件。 auth.js: router.route('/register') .post(function(req, res) { //register the user }) users.js: router.route('/:user_id') //GET user profile .get(function(req, res){ // Use the req.params.userId to get the user by Id }) 而这两者都适用于这两个。 访问/api/auth/register或/api/users/:user_id按预期工作。 但是,当试图去/api/{world_id}/villages这不会如预期的那样,因为world_id参数不会传递到文件处理它是villages.js villages.js: router.route('/') //GET all villages of the current world (world_id) .get(function(req, […]

假的REST服务器在node.js

很多时候我需要一个带有假数据的REST服务器,在其他服务完成之前就开始编码。 我需要一个简单快捷的方法来创build一个假的REST服务器,基于一个configuration文件。 假的服务器必须允许configuration几个路由,指定HTTP方法,返回的有效载荷和HTTP代码(根据查询string或path中的参数不同而不同)。 有效载荷可以configuration为JSON或纯文本(取决于服务)。 node.js模块将是最好的select,但是如果他们完成这个工作,其他选项也可以。

NodeJS:未处理的承诺在方法结束时拒绝

目前,我正在使用快速和mongoose的RESTful-API,现在我有一个问题。 首先,我的方法: public create() : Promise<UserDocument> { return new Promise((user) => { User.exists(this.username).then((exists) => { if (exists) { throw Errors.mongoose.user_already_exists; } else { UserModel.create(this.toIUser()).then((result) => { user(result); }).catch(() => { throw Errors.mongoose.user_create }); } }).catch((error) => { throw error; }) }); } 当我执行这个方法时,我得到了一个未处理的诺言拒绝。 即使我在执行这样的方法时处理错误,也会发生这种情况: User.fromIUser(user).create().then(() => { return response.status(200).send({ message: "Created", user }); }).catch((error) => […]

快速路由分离

我试图设置我的快速路由具有以下结构 src |-app.js |-api |-v1 |-index.js |-users |-routes.js |-controller.js |-tests.js |-currency |-routes.js |-controller.js |-tests.js 这个想法是保持API的每个部分包含在一起。 我想要index.js基本上确定它所属的目录的子文件夹中的所有routes.js文件,并根据需要将它们请求到express路由器,然后通过app.js作为api的相应版本。 app.js app.use('/api/v1', require('./api/v1')); API / V1 / index.js /*jslint node: true */ "use strict"; var express = require('express'); var router = express.Router(); var fs = require('fs'); fs.readdirSync(__dirname).forEach(function(file) { // Remove extension from file name var basename = file.split('.')[0]; // […]

如何将对象数据存储在redis中的nodejs rest服务中

我正在尝试在nodejs使用其他Web服务,并使用nodejs进行caching以提高性能。 我想保存为具有ID,报价名称和供应商的报价对象。 我不想有不同的关键。 在一个单一的关键是怎么做。 app.get('/insertOffers', function(req, res) { const {id, offerName, offerVendor} = req.query; client.set('offers', ) // client is my redis client });

安卓发布请求使用凌空

我在我的android代码中使用了Volley,HttpClient和HttpUrlConnection,它们从传感器pipe理器获取传感器指标。 我需要通过POST请求将这些指标导出到nodejs服务器。 每当传感器值发生变化时,我需要一个发送请求asynchronous到http服务器 MainActivity.java package com.example.rpothuraju.gyrometrics; import android.app.Activity; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.os.Bundle; import android.util.Log; import android.widget.TextView; import com.android.volley.Request; import com.android.volley.Response; import com.android.volley.VolleyError; import com.android.volley.toolbox.StringRequest; public class MainActivity extends Activity implements SensorEventListener{ TextView textView; private SensorManager sensorManager; //private Sensor sensor; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = […]

如何在输出lambda函数url中replace'latest'? 我怎么能做我自己的资源?

我是AWS Lambda新手。 如文档中所述,我使用Claudia在AWS Lambda上部署了以下示例: 'use strict'; console.log('Loading hello world function'); exports.handler = function (event, context, callback) { var name = "World"; var responseCode = 200; console.log("request: " + JSON.stringify(event)); if (event.queryStringParameters !== null && event.queryStringParameters !== undefined) { if (event.queryStringParameters.name !== undefined && event.queryStringParameters.name !== null && event.queryStringParameters.name !== "") { console.log("Received name: " + […]

无法在SailJS中创build版本化的API

首先,各种依赖的版本 Ubuntu – 15.04 NodeJS – 6.10.3 NPM – 3.10.10 帆 – 0.12.13 其次,这是我做的: 1.全球安装帆 2.在/var/www目录下运行命令sails new app 3.在api/controllers/v1创build一个文件UserController.js 4.在api/models创build一个User.js文件 UserController.js的代码 module.exports = { findOne: function(req, res) { return res.send("Hello World!!! User -> findOne"); }, login: function(req, res) { return res.send("Hello World!!! User -> login"); } } User.js代码 module.exports = {} 现在,当我使用sails lift启动服务器时,会发生以下情况: 浏览http:// localhost:1337 […]