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

时间:2015-05-15 00:28:17

标签: sitecore sitecore8

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

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

根据我的研究结果,看来我的选择是构建自定义处理程序,完全独立的asmx服务(ala this approach),或构建自定义控制器(类似于this custom Web API controller method

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

对于Sitecore 8具有相同类型要求的人是否找到了更好的方法?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

我可以看到你在添加自定义Web API控制器时提到了我的其他博文。 Enitity Service不同,它是Sitecore的一个框架,用于实现为Sitecore创建自定义Web服务的标准方法。

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

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

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

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