Define a REST API to access and manage Zope 2 content
Python CSS
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



```` provide a simple way to write REST APIs in Zope 2.


REST component

```` provides mainly a base class ``REST`` which behave a
lot like a Grok view::

   from import REST

   class MyAction(REST):
       """My action REST API.

       def POST(self, name, value):
           # Called by POST /content/++rest++myaction&name=foo?value=bar
           return 'Success'

       def GET(self):
           # Called by GET /content/++rest++myaction
           values = self.context.something()
           return self.json_response(values)

You just have to grok your package to make it available.

- You can provide: ``POST``, ``GET``, ``HEAD``, ``DELETE`` requests.

- You can use the directives ````, ``grok.require`` and
  ``grok.context`` to configure your REST API. They work exactly like
  on a ``grok.View``.

- If you need, you can manually query a REST component with the help
  of ````.

Nesting REST component

You can nest REST component. In that you should use the grok directive
adapts in order to define which is the parent handler, and the

   from import REST
   from five import grok
   from OFS.Folder import Folder

   class ParentHandler(REST):

       def GET(self):
           # Called by GET /folder/++rest++parenthandler
           return u'Hello'

   class ChildHandler(REST):
       grok.adapts(ParentHandler, Folder)

       def GET(self):
           # Called by GET /folder/++rest++parenthandler/childhandler
           return u'Child

RESTWithTemplate component

You can alternatively use the base class ``RESTWithTemplate``. The
only difference is that your class will be associated to a Grok
template automatically.


Sources can be found in Git at: