当 hooks 可以执行相同的功能时,express 中间件在 FeathersJS 中的作用是什么?

Yas*_*ula 1 feathersjs

在命令中feathers generate app我们有一个名为 middleware 的文件夹,用于向服务添加任何中间件功能,但是 hooks 可以实现相同的功能,为什么要提供中间件?我错过了什么吗?

Daf*_*aff 6

你是对的,hooks 几乎可以做 Express 中间件能做的任何事情。不同之处在于它们与传输无关。这意味着无论您是通过 websocket (Socket.io)、HTTP (Express) 还是任何其他类型的连接在内部使用该服务,挂钩都将起作用。我在现代 Web API 的设计模式中详细介绍了这种独立于传输的设计的优点。

Feathers 与 Express 完全兼容,这意味着您仍然可以使用普通的中间件,但大多数 Feathers 应用程序只有很少的中间件或通常根本没有中间件。您仍然使用 Express 中间件(使用 Socket.io 连接时不会运行)的原因是要在特定于 HTTP 请求和响应的内容之间进行转换。这样,服务和挂钩就可以以不需要知道该信息来自何处的方式对其进行处理。一些例子是

对于其他任何事情,您可以而且应该使用钩子。这样,您的应用程序将不会过时,并且在迁移到不同的传输机制时无需更改任何内容。