Tag: rest

为长时间运行的任务轮询REST API

我正在devise一个REST API来执行一些需要大量计算的任务,以供其他服务使用。 实质上,GET /command GET /command将开始执行任务,状态在/queue/12345处更新。 客户端轮询/queue/12345/直到任务完成,此时服务器发送一个303结果位置( /runs/12345 )。 我现在想要做的是在客户端写轮询function。 我现在所拥有的可以成功地进行轮询 – 但是,因为setTimeout()函数在发送请求之后立即被调用。 这意味着我将永远轮询,即使我没有在请求的callback函数中调用setTimeout() 。 一旦我收到303状态码,我怎样才能确保我的轮询function结束? // standard first call is pollQueue(uri, 0); function pollQueue(uri, timesPolled, callback) { if(timesPolled > 28800) { // 288800 is (60 sec/min * 60 min/hr * 24 hr) / 3 sec/poll. Aka 24 hours. throw 'ResourceWillNeverBeReady'; } console.log("polling " + […]

Mongoose更新文档或插入新文档如果没有findID(Express REST API)

我已经build立了一个Express REST Api,并且想实现一个检查某个对象ID是否存在的任务。 如果该ID存在于Mongo数据库中,我想使用Put请求来更新这个文档。 这部分已经在我的代码中工作。 如果ID尚不存在于数据库中,我想创build一个新的文档。 要做到这一点,我试图将“upsert”选项设置为true,但是,如果我现在做一个ID的放入请求,这是不是在我的数据库,但它回来的错误: throw er; // Unhandled 'error' event ^ CastError: Cast to ObjectId failed for value "34455ab67" at path "_id" for model "event" 这里是我的事件模型代码: var mongoose = require('mongoose'); var eventSchema = mongoose.Schema({ name: { type: String, required: true } }); var Events = module.exports = mongoose.model('event', eventSchema, 'event'); module.exports.updateEvent = […]

在节点REST服务器中,Mongo $ sample(聚合)在GET操作中不起作用

我正在使用MongoDB作为持久性数据库来实现REST服务器。 我想实现一个GET操作,返回一个集合中的随机文档,但是当我实现$ sample(聚合)方法时,它的工作方式就好像我正在实现一个返回所有文档的find({})。 这是我在我的server.js文件中使用的代码 app.get("/api/contacts", function(req, res) { //GET: find a random contact db.collection(CONTACTS_COLLECTION).aggregate( { $sample: { size: 1 } }).toArray(function(err, docs) { if (err) { handleError(res, err.message, "Failed to get contacts."); } else { res.status(200).json(docs); } }); }); server.js文件的require部分是这样的: var express = require("express"); var bodyParser = require("body-parser"); var mongodb = require("mongodb"); var ObjectID = […]

main.js:295 DELETE http://127.0.0.1:8081/messages/:0 405(方法不允许)在Javascript中

我试图发送JSON删除请求在JavaScript中的restful与nodeJS服务器删除聊天应用程序中的消息。 我试图通过请求头启用DELETE方法,但它不会工作.. 如何在这里启用DELETE方法? 这是客户端请求: function requestPoll(props) { return new Promise(function(resolve, reject) { var xhr = new XMLHttpRequest(); xhr.open(props.method, props.action); xhr.timeout = 500; // time in milliseconds if (props.method === 'post') { xhr.setRequestHeader('Content-Type', 'application/json'); } xhr.addEventListener('load', function(e) { resolve(e.target.responseText); }); xhr.send(JSON.stringify(props.data)); }); } 在这里我发送请求: requestPoll({ method: "DELETE", action: "/messages/:"+i }); 和服务器代码: var http = require('http'); var […]

使用获取获取一个简单的string

所以我在我的API中有这个: router.get('/assetName', function(req, res, next){ //Get the token from the cookies var token = req.cookies.access_token; //Check it with the config secret if(jwt.verify(token, config.secret)){ //find from name in the request body User.find({_id: req.query.id}).then(function(users){ var z; var name = []; var assetHolder = users[0].assets; for(z=0; z < assetHolder.length; z++){ if(assetHolder[z]._id == req.query.vid){ name = assetHolder[z].name; } } […]

从Node.js多次调用Web服务

我正在构build一个原型Web应用程序,它响应具有查询参数的GET请求,并且调用3个不同的Web服务,所有Web服务都有不同的有效负载 – 2是ReST(一个返回二进制对象,一个图像,一个返回JSON),1是SOAP。 然后,我需要将这些数据中的每一个汇编到为原始GET请求返回的HTML页面中。 我是新来的asynchronous编程,我认为这是我出错的地方。 对于我使用的SOAP var locationRequest = require('request'); locationRequest(options1, function (error, response, output) { … } 对于ReST调用,我使用了两个类似的调用: var resourceJSON; var body2; var resourceHttp = require("https"); var resourceRequest = resourceHttp.request(resourceOptions, function (resourceRes) { var chunks2 = []; resourceRes.on("data", function (chunk2) { body2 += chunk2; }); resourceRes.on("end", function () { resourceJSON = JSON.parse(body2); }); resourceRes.on('error', […]

如何将一个Node.js应用程序连接到一个docker服务的http rest API?

Node.js中的web应用程序通过axios连接到api。 import axios from 'axios' export function fetchList() { return axios.get('https://api.website.dev/v1/posts') } api运行良好,一切正常。 现在,我使用docker docker-compose在容器中运行完全相同的nodejs Web应用程序。 泊坞窗,compose.yml: 版本:“3.1” 服务: nodejs: image: node:alpine working_dir: /home/app restart: always ports: – "8000:8080" volumes: – ../nodejs:/home/app command: ["npm", "start"] axios调用Rest API返回一个错误: error { Error: getaddrinfo EAI_AGAIN api.domain.dev:443 at Object.exports._errnoException (util.js:1024:11) at errnoException (dns.js:55:15) at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:92:26) code: […]

Shibboleth与Node.js Rest API和Angular 2应用程序

一所大学想用Shibbolethauthentication申请一个申请。 他们提供自己的IDP。 我想做一个Node.Js后端和Angular前端。 他们都应该与REST沟通。 是否仍然有可能将Shibboleth服务提供程序集成到Node.Js后端并通过Angular前端进行身份validation?

Ping Angular 2应用程序

我有一个服务器上的Angular 2应用程序和其他Java应用程序。 我想要ping Java的Angular应用程序来检查状态(是否启动)。 有没有办法让Angular 2 RESTful API来提供这些数据,或者我需要Node.js上的东西来检查应用程序的状态(让restapi在那里? 任何帮助表示赞赏

如何获取Firebasedynamic链接分析Rest API的正确访问令牌(NodeJS)

我用serveracceskey得到的access_token有问题。 这是我在NodeJS中的代码: const admin = require('firebase-admin'); var request = require("request"); const serviceAccount = require('./serverAccountKey.json'); const credential = admin.credential.cert(serviceAccount); credential.getAccessToken().then((accessTokenInfo) => { const accessToken = accessTokenInfo.access_token; const expirationTime = accessTokenInfo.expires_in; console.log("accessToken " + accessToken ); console.log("expirationTime " +expirationTime); var s = "Bearer " + accessToken; request({ headers:{ 'Authorization': s }, uri:"https://firebasedynamiclinks.googleapis.com/v1/SHORTLINK/linkStats?durationDays=7", method: "GET", }, function(error, response, […]