2016-12-18 86 views
2

我有一個同構應用程序上運行的特快:匹配API和同構路線

app.get('*', (req, res) => { 
    match(
     { routes, location: req.url }, 
     (error, redirectLocation, renderProps) => { ... } 

目前,我的通配符,因爲這匹配的是我見過採取最boilerplates和教程我有辦法看到。

現在這個問題是我需要能夠匹配特定的路線,如/auth/api需要以不同的方式處理同構應用程序的路線。即/auth路由需要認證用戶。

我需要一種方式能夠指定這些路線,但仍然保持通配符匹配的路線使用我的同構應用程序。

我認爲,而不是使用通配符匹配,我可以收集所有的同構應用程序的路徑的一個數組,並提供了表達,而不是:

const isoRoutes = ['/home', '/about']; 
app.get([isoRoutes], (req, res)) 

我不知道,如果有更好的方法來達到這個目的嗎?

回答

1

如果您的/auth/api路由未從您的應用中提供頁面(即您正在使用它們進行AJAX調用),則應該爲它們分配不同的請求處理程序。

只要你在通配符get之前指定非通配符路由,你應該對通配符沒問題。

app.get('/auth', handleAuth); 
app.get('/api', handleAPI); 
app.get('*', handleRender); 
+0

我想知道這是否可行。謝謝保羅 –

1

你可以像這樣的代碼: -

req.url.match(//regular expression); 

匹配()只適用於正則表達式。

+0

所以你的意思是保持通配符匹配並在回調中使用'req.url.match'來處理對'api'的請求? –

+0

是的,這是正確的方法。 – Codesingh