簡體   English   中英

Sails.js-通過快遞中間件服務帆路線

[英]Sails.js - Serving sails route via express middleware

我有一個Sails應用程序,並且從該根目錄提供了與該應用程序關聯的航線,靜態資產,並且運行正常。 我想添加一個快速的中間件,以便我可以在特定路徑中提供路由和靜態資產。

為了提供靜態資產,我在config / http.js中的customMiddleware函數中使用了以下內容,

app.use('/my/new/path', express.static(path.join(__dirname, '../client', 'dist')));

通過以上操作,我能夠從根目錄以及/ my / new / path加載靜態文件。

現在談到路由時,我不確定如何處理使用app.use通過快速中間件加載的Sails路由,例如,我的config / routes-client.js中的本地路由默認為“ /”,而不是更改我想使用的路由如下,通常用於典型的node / express應用,

app.use('/my/new/path', routes); --> where routes is my server routes

有沒有一種方法可以添加快速中間件來服務特定路徑上的航行路線?

這就是我的方法

內部http.js

var express = require('express');

    module.exports.http = {
        customMiddleware: function (app) {
            app.use('/docs', express.static(path.join(sails.config.appPath, '/docs')));
        },

    ... rest of the http.js code...
    }

當然,在此示例中,im在路徑/ docs上從我的應用程序的根目錄提供docs文件夾...您可以添加到邏輯中...

我不確定為什么要將前綴自動添加到自定義路由,而不是直接將前綴直接添加到config/routes.js (或config-routes-client.js )文件中config-routes-client.js ,但是開始:

// config/http.js
middleware: {
  reroute: function (req, res, next) {
    // Set the prefix you want for routes.
    var prefix = '/foo/bar';
    // Create a regex that looks for the prefix in the requested URL.
    var regex = new RegExp('^' + prefix + '(/|$)');
    // If the prefix is found, replace it with /
    if (req.url.match(regex)) {
      req.url = req.url.replace(regex, '/');
    }
    // Continue processing the request.
    return next();
  }
}

確保將reroute添加到config/http.jsmiddleware.order數組。 順便說一句,這也將處理靜態文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM