Interfaces¶
plone.server uses interfaces to abstract and define various things including
content. Interfaces are useful when defining api contracts, using inheritance,
defining schema/behaviors and being able to define which content your services
are used for.
In the services example, you’ll notice the use of context=ISite for the service
decorator configuration. In that case, it’s to tell plone.server that the
service is only defined for a site object.
Common interfaces¶
Interfaces you will be interested in defining services for are:
plone.server.interface.IDatabase: A database contains the site objectsplone.server.interface.ISite: Site content objectplone.server.interface.IResource: Base interface for all contentplone.server.interface.IContainer: Base interface for content that can contain other contentplone.server.interface.IRegistry: Registry object interfaceplone.server.interface.IDefaultLayer: Layers are an interface applied to the request object. IDefaultLayer is the base default layer applied to the request object.