Asp.net Mvc 4 和 Web Api 中的路由 [英] Routing in Asp.net Mvc 4 and Web Api

查看:53
本文介绍了Asp.net Mvc 4 和 Web Api 中的路由的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我可以同时使用以下两个路由规则吗?

Can I use the following two route rule together ?

config.Routes.MapHttpRoute(
    name: "ActionApi",
    routeTemplate: "api/{controller}/{action}/{id}",
    defaults: new { id = RouteParameter.Optional } );

config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

按控制器说是 = FruitApiController:ApiController 我希望有以下内容

Say by controller is = FruitApiController:ApiController and I wish to have the following

  1. 列表<水果>Get() = api/FruitApi/

列表<水果>GetSeasonalFruits() = api/FruitApi/GetSeasonalFruit

Fruit GetFruits(string id) = api/FruitApi/15

Fruit GetFruitsByName(string name) = api/FruitApi/GetFruitsByName/apple

请帮我解决这个问题.谢谢

Please help me on this. Thanks

推荐答案

你可以有几个路线:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.Routes.MapHttpRoute(
            name: "ApiById",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional },
            constraints: new { id = @"^[0-9]+$" }
        );

        config.Routes.MapHttpRoute(
            name: "ApiByName",
            routeTemplate: "api/{controller}/{action}/{name}",
            defaults: null,
            constraints: new { name = @"^[a-z]+$" }
        );

        config.Routes.MapHttpRoute(
            name: "ApiByAction",
            routeTemplate: "api/{controller}/{action}",
            defaults: new { action = "Get" }
        );
    }
}

这篇关于Asp.net Mvc 4 和 Web Api 中的路由的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆