如何路由url以使用asp.net webapi添加关联实体

时间:2014-10-05 12:50:45

标签: c# rest asp.net-web-api

我的模型如下所示:

class File{
    public IList<Tag> Tags;
};

根据REST指南,如果我想在文件中添加标签。 URL应如下所示: 使用PUT方法http://service.com/File/Id/Tags/

因为我只是ASP.net MVC WebAPI的初学者。我的问题是如何将此URL路由到我的APIController?

谢谢,

1 个答案:

答案 0 :(得分:0)

默认情况下,所有API控制器的路由都为/api/SomeApi/,其中SomeApiController是ApiController。有一个单独的路由文件App_Start\WebApiConfig.cs,您可以修改该文件以获取所需的路由。

您可以拥有如下所示的路线

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

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

然后您可以使用名为“UpdateSomething”的操作,可以使用somewebsite.com/api/someapi/updatesomething访问该操作。我希望上述信息对于开始时非常有用。

<强>更新

对于路线/File/Id/Tags,您可以定义以下路线

config.Routes.MapHttpRoute(
    name: "MySpecialRoute",
    routeTemplate: "/File/Id/Tags",
    defaults: new { controller = "AbcController", action = "XyzAction" }
);

注意:尚未测试上述代码