Changes for page ERRest In Depth

Last modified by Pascal Robert on 2012/06/10 16:01

From version 34.1
edited by Pascal Robert
on 2012/06/10 12:18
Change comment: There is no comment for this version
To version 35.1
edited by Pascal Robert
on 2012/03/11 21:01
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -1,98 +21,5 @@
1 -General architecture
2 -Same Origin policy
3 -Transactions
4 -HTML vs other formats
5 -Response representation
6 -Missing route
7 -Missing object
8 -POJO objects
9 -Headers
10 -Caching
11 -Adding new format
12 -Security
13 -strictMode
14 -Workflow
15 -Query arguments and RXRestFetchSpecification
16 -ERXRestNameRegistry
17 -MapClassDescription / NSDictionaryClassDescription
18 -
19 -ERXRestUtils
20 -
21 21  request > route
22 22  
23 -* ERXRestContext
24 -** contains the editing context and an userInfo dictionnary
25 -** will be populated with er.rest.dateFormat, er.rest.timestampFormatter and er.rest.timestampFormat (read only for non-HTML responses)
26 -*** want to change the time format for a specific controller?
27 -
28 -{{code}}
29 -
30 -protected ERXRestContext createRestContext() {
31 - ERXRestContext restContext = new ERXRestContext(editingContext());
32 - restContext.setUserInfoForKey("yyyy-MM-dd", "er.rest.dateFormat");
33 - restContext.setUserInfoForKey("yyyy-MM-dd", "er.rest.timestampFormat");
34 - return restContext;
35 - }
36 -
37 -{{/code}}
38 -
39 -*
40 -** you just need to override createRestContext() in your controller if you want to add other stuff to the context (a user, etc.)
41 -* Properties
42 -** ERXRest.idKey (ERXRestFormatDelegate)
43 -*** (default "id") Override this property if you want to use a different key for the 'id' attribute** ERXRest.typeKey**
44 -** ERXRest.nilKey (ERXRestFormatDelegate)
45 -** ERXRest.writeNilKey (ERXRestFormatDelegate)
46 -** ERXRest.pluralEntityNames (ERXRestFormatDelegate)
47 -** ERXRest.writeTypeKey (ERXRestFormatDelegate)
48 -** ERXRest.suppressTypeAttributesForSimpleTypes (ERXXmlRestWriter)
49 -*** (default "false") If set to true, primitive types, like type = "datetime", won't be added to the output
50 -** ERXRest.strictMode
51 -*** In ERXMissingRouteController: (default "true") If set to true, status code in the response will be 405 Not Allowed, if set to false, status code will be 404 Not Found
52 -*** In ERXRouteController: (default "true") If set to true, status code in the response will be 405 Not Allowed, if set to false, status code will be 404 Not Found
53 -*** ERXRouteResults: (default "true") If set to true, creating a ressource will return status code 201 Created, if set to false, will return 200 OK
54 -** ERXRest.pluralEntityNames (ERXRouteRequestHandler)
55 -** ERXRest.routeCase (ERXRouteRequestHandler)
56 -** ERXRest.lowercaseEntityNames (ERXRouteRequestHandler)
57 -** ERXRest.parseUnknownExtensions (ERXRouteRequestHandler)
58 -*** (default "true") If set to "false", will return a 404 status code if the format doesn't exist
59 -** ERXRest.missingControllerName (ERXRouteRequestHandler)
60 -*** (default "ERXMissingRouteController") Allow you to specify which controller to use when a route doesn't exist
61 -** er.rest.rfcDateFormat
62 -** er.rest.dateFormat
63 -** er.rest.dateFormat.primary
64 -** er.rest.dateFormat.secondary
65 -** er.rest.dateFormatter
66 -** er.rest.timestampFormat
67 -** er.rest.timestampFormat.primary
68 -** er.rest.timestampFormat.secondary
69 -** er.rest.timestampFormatter
70 -** er.rest.rfcDateFormat
71 -** er.rest.jodaTime
72 -** ERXRest.transactionsEnabled (default 'false') ERXRestTransactionRequestAdaptor
73 -** ERXRest.maxEventsPerTransaction (default '50') ERXRestTransactionRequestAdaptor
74 -** ERXRest.accessControlAllowRequestHeaders (ERXRouteController)
75 -** ERXRest.accessControlAllowRequestMethods (ERXRouteController)
76 -** ERXRest.defaultFormat (ERXRouteController)
77 -*** (default "xml") Allow you to set the default format for all of your REST controllers
78 -** ERXRest.allowWindowNameCrossDomainTransport (ERXRouteController)
79 -** ERXRest.accessControlMaxAge (ERXRouteController)
80 -*** (default 1728000) This header indicates how long the results of a preflight request can be cached. For an example of a preflight request, see the above examples.
81 -** ERXRest.accessControlAllowOrigin (ERXRouteController)
82 -*** Set the value to '**' to enable all origins. See [[https://developer.mozilla.org/En/HTTP_access_control#Access-Control-Allow-Origin]]**
83 -* JSON Schema
84 -** {{code}}
85 -/something?schema=true
86 -
87 -public WOActionResults indexAction() {
88 -if (isSchemaRequest()) {
89 - return schemaResponse(showFilter());
90 -}
91 -protected boolean isSchemaRequest() {
92 - return request().stringFormValueForKey("schema") != null;
93 -}
94 -{{/code}}
95 -
96 96  Application(ERXApplication).dispatchRequest(WORequest) line: 2051
97 97  ERXRouteRequestHandler(WOActionRequestHandler).//handleRequest(WORequest) line: 221
98 98  ERXRouteRequestHandler.getRequestHandlerPathForRequest(WORequest) line: 782//
... ... @@ -124,3 +124,13 @@
124 124  | ERXRest.strictMode | ERXRest.strictMode
125 125  \\          |
126 126  ERXRouteController
34 +
35 +Properties
36 +
37 +ERXRest.accessControlAllowRequestHeaders
38 +ERXRest.accessControlAllowRequestMethods
39 +ERXRest.defaultFormat
40 +ERXRest.strictMode
41 +ERXRest.allowWindowNameCrossDomainTransport
42 +ERXRest.accessControlMaxAge
43 +ERXRest.accessControlAllowOrigin