Wiki source code of ERRest In Depth

Version 22.1 by Pascal Robert on 2012/05/02 16:16

Show last authors
1 * ERXRestContext
2 ** contains the editing context and an userInfo dictionnary
3 ** will be populated with er.rest.dateFormat, er.rest.timestampFormatter and er.rest.timestampFormat (read only for non-HTML responses)
4 *** want to change the time format for a specific controller?
5
6 {{code}}
7
8 protected ERXRestContext createRestContext() {
9 ERXRestContext restContext = new ERXRestContext(editingContext());
10 restContext.setUserInfoForKey("yyyy-MM-dd", "er.rest.dateFormat");
11 restContext.setUserInfoForKey("yyyy-MM-dd", "er.rest.timestampFormat");
12 return restContext;
13 }
14
15 {{/code}}
16
17 *
18 ** you just need to override createRestContext() in your controller if you want to add other stuff to the context (a user, etc.)
19 * Properties
20 ** ERXRest.idKey
21 ** ERXRest.typeKey
22 ** ERXRest.nilKey
23 ** ERXRest.writeNilKey
24 ** ERXRest.pluralEntityNames
25 ** ERXRest.writeTypeKey
26 ** ERXRest.suppressTypeAttributesForSimpleTypes
27 ** ERXRest.strictMode
28 ** ERXRest.pluralEntityNames (ERXRouteRequestHandler)
29 ** ERXRest.routeCase (ERXRouteRequestHandler)
30 ** ERXRest.lowercaseEntityNames (ERXRouteRequestHandler)
31 ** ERXRest.parseUnknownExtensions (ERXRouteRequestHandler)
32 *** (default "true") If set to "false", will return a 404 status code if the format doesn't exist
33 ** ERXRest.missingControllerName (ERXRouteRequestHandler)
34 *** (default "ERXMissingRouteController") Allow you to specify which controller to use when a route doesn't exist
35 ** er.rest.rfcDateFormat
36 ** er.rest.dateFormat
37 ** er.rest.dateFormat.primary
38 ** er.rest.dateFormat.secondary
39 ** er.rest.dateFormatter
40 ** er.rest.timestampFormat
41 ** er.rest.timestampFormat.primary
42 ** er.rest.timestampFormat.secondary
43 ** er.rest.timestampFormatter
44 ** er.rest.rfcDateFormat
45 ** ERXRest.transactionsEnabled
46 ** ERXRest.maxEventsPerTransaction
47 * JSON Schema
48 ** {{code}}
49 /something?schema=true
50
51 public WOActionResults indexAction() {
52 if (isSchemaRequest()) {
53 return schemaResponse(showFilter());
54 }
55 protected boolean isSchemaRequest() {
56 return request().stringFormValueForKey("schema") != null;
57 }
58 {{/code}}
59 * Same Origin policy
60 Transactions
61 HTML vs other formats
62 Response representation
63 Missing route
64 Missing object
65 POJO objects
66 Headers
67 Caching
68 Adding new format
69 Security
70 strictMode
71 Workflow
72 Query arguments and RXRestFetchSpecification
73 ERXRestNameRegistry
74 MapClassDescription / NSDictionaryClassDescription
75
76 ERXRestUtils
77 Properties
78 er.rest.dateFormat
79 er.rest.timestampFormat
80 er.rest.rfcDateFormat
81
82 request > route
83
84 Application(ERXApplication).dispatchRequest(WORequest) line: 2051
85 ERXRouteRequestHandler(WOActionRequestHandler).//handleRequest(WORequest) line: 221
86 ERXRouteRequestHandler.getRequestHandlerPathForRequest(WORequest) line: 782//
87
88 ERXRouteRequestHandler(WOActionRequestHandler).//handleRequest(WORequest) line: 259
89 PagesController(ERXRouteController).performActionNamed(String) line: 1328
90 PagesController(ERXRouteController).performActionNamed(String, boolean) line: 1385
91 PagesController(ERXRouteController).performRouteActionNamed(String) line: 1510
92 PagesController(ERXRouteController).performActionWithArguments(Method, Object...) line: 1559
93 ...
94 PagesController.mainPageAction() line: 20//
95
96 == ERXRouteRequestHandler ==
97
98 | **Properties**
99 | ERXRest.missingControllerName | (default "ERXMissingRouteController")
100 \\          
101 | ERXRest.parseUnknownExtensions | ERXRest.parseUnknownExtensions
102 \\          
103 | ERXRest.pluralEntityNames | ERXRest.pluralEntityNames
104 \\          
105 | ERXRest.routeCase | ERXRest.routeCase
106 \\          
107 | ERXRest.lowercaseEntityNames | ERXRest.lowercaseEntityNames
108
109 ERXMissingRouteController is the controller that is used when no route can be found. It's "missing" action is loaded.
110
111 | **Properties**
112 | ERXRest.strictMode | ERXRest.strictMode
113 \\          |
114 ERXRouteController
115
116 Properties
117
118 ERXRest.accessControlAllowRequestHeaders
119 ERXRest.accessControlAllowRequestMethods
120 ERXRest.defaultFormat
121 ERXRest.strictMode
122 ERXRest.allowWindowNameCrossDomainTransport
123 ERXRest.accessControlMaxAge
124 ERXRest.accessControlAllowOrigin