⇐功能要点 | 客户端自定义⇒ |
---|---|
SCF Handlebars Helpers ⇒ |
从一个主要版本升级到下一个版本时,Communities API的包位置可能会发生更改。
SocialComponents是POJO,表示AEM Communities功能的资源。 理想情况下,每个SocialComponent都表示一个具有公开GETter的特定resourceType,该GETter向客户端提供数据,以便准确表示资源。 所有业务逻辑和视图逻辑都封装在SocialComponent中,包括网站访客的会话信息(如有必要)。
该界面定义了表示资源所需的一组基本GETter。 重要的是,该界面规定了Map<String, Object> getAsMap()和String toJSONString()方法,这是呈现Handlebars模板和为资源公开GETJSON端点所必需的方法。
所有SocialComponent类必须实现接口com.adobe.cq.social.scf.SocialComponent
SocialCollectionComponent界面扩展了SocialComponent界面,以更好地表示其他资源集合的资源。
所有SocialCollectionComponent类必须实现接口com.adobe.cq.social.scf.SocialCollectionComponent
SocialComponentFactory(工厂)在框架中注册SocialComponent。 工厂提供了一种方法,让框架知道哪些SocialComponent可用于给定resourceType及其优先级排名*识别多个SocialComponent时。
SocialComponentFactory负责创建所选SocialComponent的实例,以便能够使用DI惯例从工厂中注入SocialComponent所需的所有依赖项。
SocialComponentFactory是OSGi服务,可以访问其他OSGi服务,这些服务可以通过构造函数传递到SocialComponent。
所有SocialComponentFactory类必须实现接口com.adobe.cq.social.scf.SocialComponentFactory
SocialComponentFactory.getPriority()方法的实现应返回最高值,以便工厂用于getResourceType()返回的给定resourceType。
SocialComponentFactoryManager(经理)管理在框架中注册的所有SocialComponents,并负责选择SocialComponentFactory以用于给定资源(resourceType)。 如果没有为特定resourceType注册工厂,则管理器将返回具有给定资源最接近超级类型的工厂。
SocialComponentFactoryManager是OSGi服务,可以访问其他OSGi服务,这些服务可以通过构造函数传递到SocialComponent。
通过调用com.adobe.cq.social.scf.SocialComponentFactoryManager
获取OSGi服务的句柄
HTTP APIPOST端点是通过实施SlingPostOperation
接口(包org.apache.sling.servlets.post
)定义的PostOperation类。
PostOperation
端点实施将sling.post.operation
设置为操作将响应的值。 将an:operation参数设置为该值的所有POST请求都将委派给此实现类。
PostOperation
将调用SocialOperation
,该执行操作所需的操作。
PostOperation
从SocialOperation
接收结果,并将相应的响应返回给客户端。
每个SocialOperation
端点扩展AbstractSocialOperation类并覆盖方法performOperation().
。此方法将执行完成操作所需的所有操作,并返回SocialOperationResult
或引发OperationException
,在这种情况下,会返回带有消息的HTTP错误状态(如果可用),而不返回正常的JSON响应或成功的HTTP状态代码。
通过扩展AbstractSocialOperation
,可以重复使用SocialComponents
来发送JSON响应。
SocialOperationResult
类作为SocialOperation
的结果返回,由SocialComponent
、HTTP状态代码和HTTP状态消息组成。
SocialComponent
表示受操作影响的资源。
对于创建操作,SocialOperationResult
中包含的SocialComponent
表示刚刚创建的资源,对于更新操作,它表示操作更改的资源。 删除操作不会返回SocialComponent
。
使用的成功HTTP状态代码为
如果请求无效或发生某些其他错误(如内部错误、参数值错误、权限不当等),则执行操作时可能会引发OperationExcepton
。 OperationException
由HTTP状态代码和错误消息组成,该消息将作为对PostOperatoin
的响应返回到客户端。
社交组件框架建议,负责执行操作的业务逻辑未在SocialOperation
类中实施,而是委派给OSGi服务。 使用业务逻辑的OSGi服务,允许由SocialOperation
端点作用的SocialComponent
与其他代码集成,并应用不同的业务逻辑。
所有OperationService
类都扩展了AbstractOperationService
,允许附加的扩展,这些扩展可挂接到正在执行的操作中。 服务中的每个操作都由SocialOperation
类表示。 通过调用方法,可在操作执行期间调用OperationExtensions
类
performBeforeActions()
performAfterActions()
OperationExtension
类是自定义的代码段,可以插入到操作中,以允许自定义操作以满足业务需求。组件的使用者可以动态地和递增地向组件添加功能。 扩展/挂接模式允许开发人员仅专注于扩展本身,而无需复制和覆盖整个操作和组件。
Adobe Marketing Cloud GitHub存储库中提供了示例代码。 搜索前缀为aem-communities
或aem-scf
的项目。
查看编码准则部分,了解面向AEM Communities开发人员的各种编码准则和最佳实践。
另请参阅UGC🔗的存储资源提供程序(SRP),以了解有关访问用户生成内容的信息。
⇐功能要点 | 客户端自定义⇒ |
---|---|
SCF Handlebars Helpers ⇒ |