Tag: rest

为mongodb REST API编写通用查询函数

我使用node.js表示MongoDB和Mongoose为我的应用程序创buildrestAPI。 我想知道有什么样的types来代替下面的代码更通用? 我不想一直通过所有的参数,只是在一定的时间。 大部分时间我只想通过他们的一部分。 通常在Java中,我创build这样的东西的build设者,但我不知道JavaScript的任何技巧:) exports.getMessages = function (req, res) { var from = req.query.from; var deleted = req.query.deleted; var readed = req.query.readed; if(from && deleted && readed) { Message.find({to: req.user.email, from: from, deleted: deleted, readed: readed}, function(err, messages) { if(err) { res.send(err); } res.json(messages); }) } else if(from && deleted) { Message.find({to: req.user.email, from: […]

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和删除。 可能吗? 非常感谢您的帮助!

避免使用node.js在rest apicaching

我search了很多关于这个主题,为什么/如何避免restfull APIcaching,但我没有得到一个有用的答案。 我使用faker模块构build了expressjs api来生成随机json数据,但对于第一个请求,一切都很顺利,但浏览器或任何其他请求上的任何刷新都会显示相同的数据。 我想每个请求生成一个随机的数据,但我想在第一个请求后,nodejs模块被caching。 我在用着 nodejs:最新版本,expressjs:v4.0,faker:最新版本 我的代码如下: 在路由器文件中: router.js var router = express.Router(); router.get('/name', controller.name); . . 在控制器文件中: json.controller.js //Get name var name = require('name.model.js'); exports.name = function(req, res){ var randomName = name; return res.json(200, randomName); }; 在模型文件中: name.model.js var faker = require('faker'); var nameModel = {}; nameModel.name = faker.name.findName(); module.exports = nameModel; 任何一个可以帮助如何避免restAPIcaching? […]

使用带有环回的非rest呼叫(强循环)

我们为我们的REST API使用了Loopback,并希望通过相同的实例来实现一些标准的Node Express类似的调用,这些调用不会通过Loopback框架自动路由。 我们如何添加一个新的单独的路线而不会干扰环回路由? 以下是标准的Loopback启动代码: var loopback = require('loopback'); var boot = require('loopback-boot'); var app = module.exports = loopback(); // Bootstrap the application, configure models, datasources and middleware. // Sub-apps like REST API are mounted via boot scripts. boot(app, __dirname); app.start = function() { // start the web server return app.listen(function() { app.emit('started'); console.log('Web server […]

洞悉两个REST APIdevise的可行性

过去我已经开发了几个REST API,目前正在为我们公司内部的软件解决scheme构build一个新的REST API。 我select了MEAN堆栈来构build这个和Mongoose来pipe理模式devise和数据层validation。 良好的devise,耐用性和可扩展性是我的榜单之首。 API将被我们内部的Angular应用程序,Android应用程序所使用,谁知道还有什么,有一天我们的PHP网站可能会使用API​​,或者将来我们可能会为其他业务提供平台。 我目前正在称重两种devise: 通用目的 :根据身份validation提供对除API的受限制CRUD访问权以外的所有访问权限,为复杂请求提供自定义端点。 有点像Parse 。 限制 :曾经使用过这个。 API消费者提出了一个需求,然后由服务器以端点的forms完成。 通用devise API消费者可以灵活地根据前端需求来制作查询,而非常复杂的编译则被转移到自定义的端点上。 全局限制(例如:最多可以返回100条logging),每个经过身份validation的系统用户types可以是限制性模式和logging级访问。 'use strict'; module.exports = function (app) { // Api routing var api = require('../controllers/api.controller.js'); /** * Cental API router */ app.route('/api/create') .post(api.create); app.route('/api/read') .get(api.read); app.route('/api/update') .put(api.update); app.route('/api/remove') .delete(api.remove); app.route('/api/dashboard/:country/:date') //Complex endpoint .get(api.dashboard); }; 创build调用的示例响应: { "response":[ { "_id":"54f703531c3757fe23923250", […]

用多对一的方式覆盖sails GET蓝图

警告:新的networking编程。 我有一个帆船项目中的以下内容: // in models/User.js // user has many videos module.exports = { attributes: { videos: { collection: 'video', via: 'owner' } } } // in models/Video.js // video has one user module.exports = { attributes: { owner: { model: 'user' } } } 我正在使用带有/ v1前缀的REST蓝图。 我试图重写GET / v1 / user /:id / video,或者自定义路由到GET / […]

快速请求后处理

我在express的文档里找不到任何东西,但是有请求后处理的东西吗? 我正在使用使用通行证的自定义令牌身份validationscheme,我希望能够在发出请求后自动更新响应头中的令牌,主要是用于身份validation目的的哈希时间戳。 为了便于讨论,让我们在每个请求之后执行以下函数: function requestPostProcess(req, res){ if (res.status == 200) { res.token = updateToken(); } } 理想情况下,我希望能够做到这一点,而不必在每个路线中调用next()。 这甚至可能吗?

快递有时会选错路线

我有一个基于NodeJS的REST服务暴露使用Express(4.0.0),我有两个不同的路线是这样的: router.get('/buckets/:bucketId/entities/bulk', getEntitiesInBulk); router.get('/buckets/:bucketId/entities/:key', getEntityByKey); 当我发送这样的请求: http://<server:port>/buckets/responses/entities/k3 这个请求是由我在那里定义的getEntityByKey()来处理的,但是奇怪的是,当我用很多请求轰炸它时,它有时候会被getEntitiesInBulk()处理,并在getEntitiesInBulk()抛出的响应中得到一些错误。 我完全不知道这怎么可能。

有效的方式来处理REST Apis中的错误情况

我在node.js中编写了一个REST API。 我期望最多5个参数到达我的GET请求。 如果有不明身份的参数,我希望发送400错误的请求。 目前我正在以如下方式处理: server.route({ method: "GET", path : "/test", handler : function (request, reply) { if (request.query.a || request.query.b || request.query.c || request.query.d || request.query.e) { // do some processing } else { reply("No valid parameters").code(400); } } }); 现在,如果有一些有效的和一些无效的情况下,这不处理案件。 我可以通过使用更多的条件来解决这个问题。 但我只是想知道是否有一个标准或更有效的方法是由开发人员使用

如何在nodejs中使用dynamic参数进行一系列并行API请求

我想根据存储在数组中的参数值(大约30-40个值),通过更改URL中的单个参数值进行一系列API调用。 我正在使用NodeJS和Express。 以下是我为此写的一个片段: var express = require('express'); var router = express.Router(); var rest = require('restler'); router.get('/myroute', function(req, res, next){ parameterArray = [ /* A list of parameter values in here gathered from two more API calls */]; returnArray = []; for(var i = 0; i < parameterArray.length; i++){ var url = 'https://api.example.org?parameter=' + parameterArray[i]; rest.get(url).on('success', […]