2014-02-14 51 views
4

我想通過2個或更多路線模式執行相同的操作。多南希航線模式到一個單一的行動?

例如:

//Route 1: 
Get["/{category}/{product_name}/{id}"] 

// Route 2: 
Get["/api/products/{id}"] 

理想地第一路線將是搜索引擎友好並返回一個視圖,第二路由將返回JSON和被用作API。

它只是一個定義2個獨立路由並調用封裝在另一個方法中的公共邏輯的問題?還是有一些我不知道的南希魔法?

更新 我最終的解決方案是在一個語句中使用多個賦值。

Get["/{category}/{product_name}/{id}"] = Get["/api/products/{id}"] = params => 
{ 
    ... 
}; 
+0

我喜歡你的解決方案,這也是我所實施的。你能否把它放在一個建議的解決方案,以便它可以被投票。 – Bronumski

回答

1

這是一個調用共同邏輯的問題。我害怕沒有魔力。 請注意,Nancy的內容協商可以根據請求來處理返回視圖或json。

3

我知道這是回答,但我想我會添加我的tuppence一個稍微整潔的解決方案。這是我的解決方案:

public class ExampleModule : NancyModule 
    { 
     public ExampleModule() 
     { 
      Get["/somepath"] = DoSomething; 
      Post["/somepath"] = DoSomething; 
     } 

     private dynamic DoSomething(dynamic parameters) 
     { 
      return null; 
     } 
    }