使用相同的签名创建多个Web Api

时间:2016-03-16 20:08:22

标签: c# web-services

我有一个GRID控制器,并创建我的API以获取一个车辆列表,其中包含ListTree中每辆车的详细信息,并且工作正常。

现在我为汽车创建一个ID and Color,只需要基本的细节。 GetSimpleCar()

我如何在当前控制器中创建具有相同签名的另一个方法CarSimple,或者我应该创建另一个控制器public List<dtoCar> Get() { List<dtoCar> result = db.cars.Select( r => new dtoCar { Car_ID = r.car_id, X = r.x, Y = r.y, RoadName = r.rto.name, Azimuth = (int)r.avl.azimuth, Color = r.Color, DateTime = r.datetime.Value, Geom = r.geomtext }).ToList(); return result; }

目前我有:

$('#ajax').jstree({
    'core': {
        'data': {
         -- RIGHT NOW
            "url": "http://localhost/TreeTest/api/Cars/"
                                                  ^^   
                                                 Controller
         -- DESIRE CHANGE
            "url": "http://localhost/TreeTest/api/Cars/GetSimpleCar"
                                                            ^^ 
                                                       Second Method?
        } 
    },
    "checkbox": {
        "keep_selected_style": false
    },
    "plugins": ["wholerow", "checkbox"]
});

我不想使用当前的API来创建树。

{{1}}

1 个答案:

答案 0 :(得分:1)

您可以在同一控制器中设置固定路线,如下所示:

using System.Web.Http;
...    
[HttpGet]
[Route("api/Cars/GetSimpleCar")]
public object GetCarsButOnlyIdAndColor()
{
    return db.cars.Select(r => new
    {
        Car_ID = r.car_id,
        Color = r.Color,
    }).ToList();
}

WebApi不关心方法的名称,重要的是路线。

和vendettamit说的一样,你需要Enable Attribute Routing

文档:

Routing and Action Selection in ASP.NET Web API

Attribute Routing in ASP.NET Web API 2