我正在浏览一个开源消息传递软件,经过一些研究,我发现了这三个产品.我已经把这些用于初步测试,让他们处理队列和主题的消息,从我所读到的,所有这三个产品都是大多数公司的开源消息解决方案的好选择.我想知道这些产品可能具有哪些优势?我特别感兴趣的是消息吞吐量,包括持久消息吞吐量,安全性,可伸缩性,可靠性,支持,路由功能,度量和监视等管理选项,以及每个程序在大型业务环境中运行的程度.
随便把这个问题放在我脑海里!什么是API,框架和中间件之间的区别?基本上所有这些都为应用程序提供了抽象的低级服务.在那种情况下,为什么dot net称为框架和windows API称为.. API?
我正在使用最新版本的NodeJS和ExpressJS(用于MVC).
我通常像这样配置我的休息路径,例如:
app.get('/archive', routes.archive);
Run Code Online (Sandbox Code Playgroud)
现在我想要保护我的一/admin/*组URL,我的意思是我只需要简单的身份验证,它只是一个草稿.
例如,当用户尝试访问时,/admin/posts在向他发送相应的视图和数据之前,我会检查req.session.authenticated.如果没有定义,我会重定向到登录页面.
登录页面有一个简单的验证表单和一个登录控制器方法:如果用户确实发送了"正确的用户"和"正确的密码",我设置会话变量并对其进行身份验证.
我发现很难或者我不明白的是,在每次/ admin/*路径调用之前,如何实际制作"过滤"代码,我的意思是认证检查.
这与"中间件"快递功能有关吗?
谢谢
我有一个节点应用程序像其他微服务前面的防火墙/调度程序一样坐着,它使用如下的中间件链:
...
app.use app_lookup
app.use timestamp_validator
app.use request_body
app.use checksum_validator
app.use rateLimiter
app.use whitelist
app.use proxy
...
Run Code Online (Sandbox Code Playgroud)
但是对于特定的GET路由,我想跳过除rateLimiter和proxy之外的所有路由.他们是否可以使用Rails before_filter设置过滤器:除了/:仅?
我看到LoopBack内置了Express 3.x中间件.确实,身体解析器在loopback/node_modules.但我无法弄清楚如何将其用作中间件.我从未使用Express 3.x,所以也许就是这样.require显然,除非我在我的项目中安装body-parser作为依赖项,否则它不起作用.
我该怎么做server.js才能使用body-parser来解析web表单req.params?这就是它的作用,对吧?
对于某些页面,我在我的应用程序中有自定义的500,404和403错误处理.因此,例如在数据库查询失败后,我会去:
return next({status: 404, message: 'Record not found'});
Run Code Online (Sandbox Code Playgroud)
要么
return next(new Error('Bad things have happened')});
Run Code Online (Sandbox Code Playgroud)
在我的中间件中,我有一个错误处理程序:
app.use(function (err, req, res, next) {
// handle error
});
Run Code Online (Sandbox Code Playgroud)
问题是永远不会调用错误处理程序,而是将错误调用堆栈打印到浏览器中.我希望处理程序呈现自定义错误页面.
app.js
var express = require('express')
, app = express()
, swig = require('swig')
, config = require('./lib/config')
, env = process.env.NODE_ENV || 'development'
, path = require('path');
config.configure(env);
app.engine('html', swig.renderFile);
app.set('view cache', false);
swig.setDefaults({
cache: config.get('swigCache')
});
app.set('view engine', 'html');
app.set('views', __dirname + '/lib/views');
require('./lib/util/swig');
require('./lib/initialisers/mongodb')();
require('./lib/initialisers/aws')();
require('./lib/middleware')(app); // first load middleware
require('./lib/routes')(app); …Run Code Online (Sandbox Code Playgroud) 我知道Rack中间件过滤器是一个带有初始化和调用方法的Ruby类.我知道call方法采用"env"参数.像这样的东西:
class MyFilter
def initialize(app)
end
def call(env)
end
end
Run Code Online (Sandbox Code Playgroud)
我的问题是:"env"参数究竟发送给"call"的是什么?这与Rails ENV环境(即开发,测试,生产)相同.
谢谢!
我是React-Redux技术的新手,我希望你能帮助我实现一些功能.
我想用套接字(socket.io)实现一个聊天应用程序.首先,用户必须注册(我在服务器端使用护照),之后,如果注册成功,则用户必须连接到webSocket.
我认为最好的方法是使用像管道这样的中间件来执行所有操作,并根据什么样的操作获取中间件,做不同的事情.
如果操作类型是AUTH_USER,则创建客户端 - 服务器连接并设置将来自服务器的所有事件.
如果操作类型是MESSAGE向服务器发送消息.
代码片段:
----- socketMiddleware.js ----
import { AUTH_USER, MESSAGE } from '../actions/types';
import * as actions from 'actions/socket-actions';
import io from 'socket.io-client';
const socket = null;
export default function ({ dispatch }) {
return next => action => {
if(action.type == AUTH_USER) {
socket = io.connect(`${location.host}`);
socket.on('message', data => {
store.dispatch(actions.addResponse(action.data));
});
}
else if(action.type == MESSAGE && socket) {
socket.emit('user-message', action.data);
return next(action)
} else {
return next(action)
} …Run Code Online (Sandbox Code Playgroud) 我正在使用laravel开发一个应用程序,我意识到可以完成的任务Policy可以完成Middleware.假设我想阻止用户更新路线,如果他/她不是信息的所有者,我可以轻松地从路线检查并且可以从策略中做同样的事情.
所以我的问题是为什么我应该使用policy中间件,反之亦然
我是整个Node.js的新手,所以我仍然试图了解事物如何"连接".
我正在尝试使用快速表单验证.根据您可以做的文档
app.post( '/user', // Route
form( // Form filter and validation middleware
filter("username").trim()
),
// Express request-handler gets filtered and validated data
function(req, res){
if (!req.form.isValid) {
// Handle errors
console.log(req.form.errors);
} else {
// Or, use filtered form data from the form object:
console.log("Username:", req.form.username);
}
}
);
Run Code Online (Sandbox Code Playgroud)
在App.js. 但是,如果我把类似的东西app.get('/user', user.index);放在一个单独的文件中.我想对验证中间件(或将验证代码放在控制器中)做同样的事情,以便在我开始添加更多页面后更容易概述App.js文件.
有没有办法实现这个目标?
基本上我想把类似的东西 app.get('/user', validation.user, user.index);
middleware ×10
express ×5
node.js ×5
api ×1
body-parser ×1
coffeescript ×1
frameworks ×1
hornetq ×1
javascript ×1
jms ×1
laravel ×1
login ×1
loopbackjs ×1
php ×1
policy ×1
qpid ×1
rack ×1
reactjs ×1
redux ×1
socket.io ×1
terminology ×1
windows ×1