多个Nancy路由模式到单个动作?

时间:2014-02-14 04:41:35

标签: nancy

我希望通过2个或更多路由模式执行相同的操作。

例如:

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

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

理想情况下,第一条路线是SEO友好型并返回视图,第二条路线将返回JSON并用作API。

仅仅是定义2个单独的路由并调用封装在另一个方法中的公共逻辑?还是有一些我不知道的南希魔法?

更新 我的最终解决方案是在一个语句中使用多个赋值。

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

2 个答案:

答案 0 :(得分:5)

我知道这已经得到了解答,但我想我会把我的tuppence添加到一个稍微整洁的解决方案中。这是我的解决方案:

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

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

答案 1 :(得分:2)

这是调用共同逻辑的问题。没有魔法我害怕。 请注意,Nancy的内容协商可以根据请求返回视图或json。