-
Notifications
You must be signed in to change notification settings - Fork 0
/
README.txt
82 lines (54 loc) · 1.94 KB
/
README.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
===========
infrae.rest
===========
``infrae.rest`` provide a simple way to write REST APIs in Zope 2.
API
===
REST component
--------------
``infrae.rest`` provides mainly a base class ``REST`` which behave a
lot like a Grok view::
from infrae.rest 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.name``, ``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 ``infrae.rest.queryRESTComponent``.
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
context::
from infrae.rest import REST
from five import grok
from OFS.Folder import Folder
class ParentHandler(REST):
grok.context(Folder)
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.
Repository
==========
Sources can be found in Git at: https://github.com/infrae/infrae.rest