Changes for page ERRest In Depth

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

From version 31.1
edited by Pascal Robert
on 2012/06/10 12:21
Change comment: There is no comment for this version
To version 27.1
edited by Pascal Robert
on 2012/03/11 20:59
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -1,118 +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 -{{code}}
24 -
25 - /**
26 - * A NameFormat that behaves like Rails -- plural entities, plural routes, lowercase underscore names
27 - * (names_like_this).
28 - */
29 - public static NameFormat RAILS = new NameFormat(true, true, NameFormat.Case.LowercaseUnderscore);
30 -
31 - /**
32 - * A NameFormat that behaves like WO -- singular entities, singular routes, camel names (NamesLikeThis).
33 - */
34 - public static NameFormat WO = new NameFormat(false, false, NameFormat.Case.CamelCase);
35 -
36 - /**
37 - * A NameFormat that behaves like WO -- singular entities, singular routes, lowercase camel names (namesLikeThis).
38 - */
39 - public static NameFormat WO_LOWER = new NameFormat(false, false, NameFormat.Case.LowerCamelCase);
40 -
41 -{{/code}}
42 -
43 -* ERXRestContext
44 -** contains the editing context and an userInfo dictionnary
45 -** will be populated with er.rest.dateFormat, er.rest.timestampFormatter and er.rest.timestampFormat (read only for non-HTML responses)
46 -*** want to change the time format for a specific controller?
47 -
48 -{{code}}
49 -
50 -protected ERXRestContext createRestContext() {
51 - ERXRestContext restContext = new ERXRestContext(editingContext());
52 - restContext.setUserInfoForKey("yyyy-MM-dd", "er.rest.dateFormat");
53 - restContext.setUserInfoForKey("yyyy-MM-dd", "er.rest.timestampFormat");
54 - return restContext;
55 - }
56 -
57 -{{/code}}
58 -
59 -*
60 -** you just need to override createRestContext() in your controller if you want to add other stuff to the context (a user, etc.)
61 -* Properties
62 -** ERXRest.idKey (ERXRestFormatDelegate)
63 -*** (default "id") Override this property if you want to use a different key for the 'id' attribute** ERXRest.typeKey**
64 -** ERXRest.nilKey (ERXRestFormatDelegate)
65 -** ERXRest.writeNilKey (ERXRestFormatDelegate)
66 -** ERXRest.pluralEntityNames (ERXRestFormatDelegate)
67 -** ERXRest.writeTypeKey (ERXRestFormatDelegate)
68 -** ERXRest.suppressTypeAttributesForSimpleTypes (ERXXmlRestWriter)
69 -*** (default "false") If set to true, primitive types, like type = "datetime", won't be added to the output
70 -** ERXRest.strictMode
71 -*** 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
72 -*** 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
73 -*** ERXRouteResults: (default "true") If set to true, creating a ressource will return status code 201 Created, if set to false, will return 200 OK
74 -** ERXRest.pluralEntityNames (ERXRouteRequestHandler)
75 -** ERXRest.routeCase (ERXRouteRequestHandler)
76 -** ERXRest.lowercaseEntityNames (ERXRouteRequestHandler)
77 -** ERXRest.parseUnknownExtensions (ERXRouteRequestHandler)
78 -*** (default "true") If set to "false", will return a 404 status code if the format doesn't exist
79 -** ERXRest.missingControllerName (ERXRouteRequestHandler)
80 -*** (default "ERXMissingRouteController") Allow you to specify which controller to use when a route doesn't exist
81 -** er.rest.rfcDateFormat
82 -** er.rest.dateFormat
83 -** er.rest.dateFormat.primary
84 -** er.rest.dateFormat.secondary
85 -** er.rest.dateFormatter
86 -** er.rest.timestampFormat
87 -** er.rest.timestampFormat.primary
88 -** er.rest.timestampFormat.secondary
89 -** er.rest.timestampFormatter
90 -** er.rest.rfcDateFormat
91 -** er.rest.jodaTime
92 -** ERXRest.transactionsEnabled (default 'false') ERXRestTransactionRequestAdaptor
93 -** ERXRest.maxEventsPerTransaction (default '50') ERXRestTransactionRequestAdaptor
94 -** ERXRest.accessControlAllowRequestHeaders (ERXRouteController)
95 -** ERXRest.accessControlAllowRequestMethods (ERXRouteController)
96 -** ERXRest.defaultFormat (ERXRouteController)
97 -*** (default "xml") Allow you to set the default format for all of your REST controllers
98 -** ERXRest.allowWindowNameCrossDomainTransport (ERXRouteController)
99 -** ERXRest.accessControlMaxAge (ERXRouteController)
100 -*** (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.
101 -** ERXRest.accessControlAllowOrigin (ERXRouteController)
102 -*** Set the value to '**' to enable all origins. See [[https://developer.mozilla.org/En/HTTP_access_control#Access-Control-Allow-Origin]]**
103 -* JSON Schema
104 -** {{code}}
105 -/something?schema=true
106 -
107 -public WOActionResults indexAction() {
108 -if (isSchemaRequest()) {
109 - return schemaResponse(showFilter());
110 -}
111 -protected boolean isSchemaRequest() {
112 - return request().stringFormValueForKey("schema") != null;
113 -}
114 -{{/code}}
115 -
116 116  Application(ERXApplication).dispatchRequest(WORequest) line: 2051
117 117  ERXRouteRequestHandler(WOActionRequestHandler).//handleRequest(WORequest) line: 221
118 118  ERXRouteRequestHandler.getRequestHandlerPathForRequest(WORequest) line: 782//
... ... @@ -141,6 +141,36 @@
141 141  ERXMissingRouteController is the controller that is used when no route can be found. It's "missing" action is loaded.
142 142  
143 143  | **Properties**
144 -| ERXRest.strictMode | ERXRest.strictMode
145 -\\          |
31 +| ERXRest.strictMode | ERXRest.strictMode
32 +\\           |
146 146  ERXRouteController
34 +
35 +Properties
36 +
37 +ERXRest.accessControlAllowRequestHeaders
38 +ERXRest.accessControlAllowRequestHeaders
39 +           
40 +
41 +ERXRest.accessControlAllowRequestMethods
42 +ERXRest.accessControlAllowRequestMethods
43 +           
44 +
45 +ERXRest.defaultFormat
46 +ERXRest.defaultFormat
47 +           
48 +
49 +ERXRest.strictMode
50 +ERXRest.strictMode
51 +           
52 +
53 +ERXRest.allowWindowNameCrossDomainTransport
54 +ERXRest.allowWindowNameCrossDomainTransport
55 +           
56 +
57 +ERXRest.accessControlMaxAge
58 +ERXRest.accessControlMaxAge
59 +           
60 +
61 +ERXRest.accessControlAllowOrigin
62 +ERXRest.accessControlAllowOrigin
63 +