1

我有一个包含分层资源的 RESTful Web 服务。我想将这些资源分离到由全局路由类(global.asax)映射的不同服务类中。例如,如果我有这样的资源层次结构:

Book/
Book/{BookID}/Chapters/
Book/{BookID}/Chapters/{ChapterID}/
etc...

我只能像这样映射到一个类:

RouteTable.Routes.Add(new ServiceRoute("Books/", new WebServiceHostFactory()
  , typeof(BookService)));

这可行,但我必须在该单一服务中实现所有方法。我宁愿拥有多个服务类,如 BookService、ChapterService 等......像这样:

RouteTable.Routes.Add(new ServiceRoute("Books/", new WebServiceHostFactory()
  , typeof(BookService)));

RouteTable.Routes.Add(new ServiceRoute("Books/{BookID}/Chapters/"
  , new WebServiceHostFactory(), typeof(ChapterService)));

但它不起作用......所以现在我被迫将我的所有方法都定义在一个服务中。有没有办法解决这个问题,或者我注定要使用这个单一的巨大服务类?

4

1 回答 1

1

看看这个答案。它与使用 ASP.NET Web API 的路由有关(一些评论建议使用它,我也会这样做),但它也与开发 RESTful API 相关。我不会尝试在 API 中显示架构的层次结构,因为我认为这会增加很多不必要的复杂性。因此,您的 API 示例如下所示:

/Chapters/{ChapterID}?Book={BookID}

这消除了复杂的路由,API 用户更容易理解,并坚持 RESTful 原则。

于 2012-07-30T14:56:48.313 回答