如何在trapi中设置自定义中间件?

Max*_*Max 2 middleware strapi

我只是想在 Strapi 中设置一个简单的自定义中间件。我已经尝试过他们在文档中编写的内容,但我发现环境文件夹和内部配置已被删除。以下是我目前所写的。

/config/environments/development/middleware.json

{
  "subscribers": {
    "enabled": true
  }
}
Run Code Online (Sandbox Code Playgroud)

/config/middleware.json

{
  "timeout": 100,
  "load": {
    "before": ["responseTime", "logger", "cors", "responses", "gzip"],
    "order": ["parser", "subscribers"],
    "after": ["router"]
  }
}
Run Code Online (Sandbox Code Playgroud)

/中间件/订阅者/index.js

module.exports = (strapi) => {
  return {
    initialize() {
      strapi.app.use(async (ctx, next) => {
        console.log("I have been called!");
        await next();
      });
    },
  };
};

Run Code Online (Sandbox Code Playgroud)

请帮我在trapi api中实现一个中间件。事先谢谢。

Max*_*Max 5

我只是做了文档中写的内容,我会在我的回答中做同样的事情!

最初,我正在阅读@Derrick Mehaffy 提到的旧版本文档。我找到了正确的文档 url 并通读了它的中间件实现。[链接到文档](以下解释来自文档)

------------------------------------------------------------------------------------

示例:创建您的自定义中间件。[路径——./middlewares/timer/index.js ]

module.exports = strapi => {
  return {
    initialize() {
      strapi.app.use(async (ctx, next) => {
        const start = Date.now();
        // I just add custom code that logs `I have been called!`
        console.log('I have been called!');
        await next();

        const delta = Math.ceil(Date.now() - start);

        ctx.set('X-Response-Time', delta + 'ms');
      });
    },
  };
};
Run Code Online (Sandbox Code Playgroud)

在环境设置中启用中间件。

首先加载中间件 - !您可以按正确的顺序进行

路径——./config/middleware.js

module.exports = {
  load: {
    before: ["timer", "responseTime", "logger", "cors", "responses", "gzip"],
    order: ["parser", ],
    after: ["router", ],
  },
  settings: {
    timer: {
      enabled: true,
    },
  },
};
Run Code Online (Sandbox Code Playgroud)

基本上我只是从文档中复制并粘贴了答案,但它可能对将来的使用有所帮助,因为我留下了这个问题