我如何包装 Sitecore 8 itemWebApi 以将自定义业务逻辑应用于 API 响应?

How can I wrap the Sitecore 8 itemWebApi to apply custom business logic to API responses?

我需要构建一个服务端点以向发出请求的移动应用程序客户端提供特定的 Sitecore 8.0 项目(包含内容树给定分支中的给定字段值)。封装这个逻辑(也许还有一些其他计算等)意味着开箱即用 API 不合适。

我想模仿另一个 CMS 公开的现有 SOAP 服务,但是如果它赋予更好的代码可重用性或升级安全性,我不会使用 RESTful itemWebApi 的修改版本。

根据我迄今为止的研究,看来我的选择是构建一个自定义处理程序,一个完全独立的 asmx 服务 (ala this approach), or to build a custom controller (similar to this custom Web API controller method)。

覆盖或替换 itemWebApi 的默认管道处理器似乎不可行,因为我不想 replace/modify OOB API 如果我能避免的话。

有没有对 Sitecore 8 有相同需求的人找到更好的方法?

我选择的方法是创建一个单独的服务 "router" 使用适配器模式开发,供我们的移动应用程序客户端使用。路由器依次调用 Sitecore ItemWebApi。

这最符合我的需求,因为它与 Sitecore 应用程序完全分离,并且可以根据需要修改客户端,而不会影响端点。

在 Sitecore 8 中 Sitecore.Services.Client 内的 EntityService 也值得一看。它是一种基于 Web API 的服务,但比标准 Sitecore Item Web API 具有更大的灵活性,因为您可以自己定义模型和业务逻辑。

我看到您提到了我的其他博客 post 关于添加自定义 Web API 控制器。实体服务不同,它是 Sitecore 的一个框架,用于实现为 Sitecore 创建自定义 Web 服务的标准方法。

我写了一篇关于 EntityService 的博客 post。它同时具有 Javascript 和基于标准休息的 API 来与服务通信。

http://mikerobbins.co.uk/2015/01/06/entityservice-sitecore-service-client/

此处的示例应用程序:https://github.com/sobek1985/EntityServiceDemo

还有一些关于实体服务高级功能的 post:http://mikerobbins.co.uk/category/sitecore/sitecore-service-client/