Changes for page ERRest In Depth
Last modified by Pascal Robert on 2012/06/10 16:01
From version 16.1
edited by Pascal Robert
on 2012/06/10 15:33
on 2012/06/10 15:33
Change comment:
There is no comment for this version
To version 24.1
edited by Pascal Robert
on 2012/05/02 16:16
on 2012/05/02 16:16
Change comment:
There is no comment for this version
Summary
-
Page properties (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -1,104 +102,3 @@ 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 -Calling an action goes like this: 20 - 21 -{{code}} 22 - 23 -Application.dispatchRequest -> 24 -ERXRouteRequestHandler.handleRequest -> 25 -ERXRouteRequestHandler._handleRequest -> 26 -RestEntitiesController(ERXRouteController).performActionNamed(String actionName, false throwExceptions) -> 27 -RestEntitiesController(ERXRouteController).performRouteActionNamed -> RestEntitiesController(ERXRouteController).performActionWithArguments(Method, Object...) -> 28 -Method.invoke -> ... 29 -RestEntitiesController.indexAction() 30 - 31 -{{/code}} 32 - 33 -performActionNamed: 34 - 35 -{{code}} 36 - 37 - 38 -if (transactionAdaptor.transactionsEnabled() && !transactionAdaptor.isExecutingTransaction(context(), request())) { 39 - if (!transactionAdaptor.willHandleRequest(context(), request())) { 40 - if (transactionAdaptor.didHandleRequest(context(), request())) { 41 - results = stringResponse("Transaction request enqueued."); 42 - } else { 43 - results = stringResponse("Transaction executed."); 44 - } 45 - } 46 -} 47 - 48 -if (results == null) { 49 - checkAccess(); 50 -} 51 - 52 -if (results == null && isAutomaticHtmlRoutingEnabled() && format() == ERXRestFormat.html()) { 53 - results = performHtmlActionNamed(actionName); 54 -} 55 - 56 -if (results == null) { 57 - results = performRouteActionNamed(actionName); 58 -} 59 - 60 -if (results == null) { 61 - results = response(null, ERXKeyFilter.filterWithAttributes()); 62 -} 63 -else if (results instanceof IERXRouteComponent) { 64 - _takeRouteParametersFromRequest(results); 65 -} 66 - 67 -{{/code}} 68 - 69 -checkAccess: 70 - 71 -{{code}} 72 - 73 -protected void checkAccess() throws SecurityException { 74 -} 75 - 76 -{{/code}} 77 - 78 -ERXRestUtils 79 - 80 -request > route 81 - 82 -{{code}} 83 - 84 -/** 85 - * A NameFormat that behaves like Rails -- plural entities, plural routes, lowercase underscore names 86 - * (names_like_this). 87 - */ 88 - public static NameFormat RAILS = new NameFormat(true, true, NameFormat.Case.LowercaseUnderscore); 89 - 90 - /** 91 - * A NameFormat that behaves like WO -- singular entities, singular routes, camel names (NamesLikeThis). 92 - */ 93 - public static NameFormat WO = new NameFormat(false, false, NameFormat.Case.CamelCase); 94 - 95 - /** 96 - * A NameFormat that behaves like WO -- singular entities, singular routes, lowercase camel names (namesLikeThis). 97 - */ 98 - public static NameFormat WO_LOWER = new NameFormat(false, false, NameFormat.Case.LowerCamelCase); 99 - 100 -{{/code}} 101 - 102 102 * ERXRestContext 103 103 ** contains the editing context and an userInfo dictionnary 104 104 ** will be populated with er.rest.dateFormat, er.rest.timestampFormatter and er.rest.timestampFormat (read only for non-HTML responses) ... ... @@ -118,18 +118,14 @@ 118 118 * 119 119 ** you just need to override createRestContext() in your controller if you want to add other stuff to the context (a user, etc.) 120 120 * Properties 121 -** ERXRest.idKey (ERXRestFormatDelegate) 122 -*** (default "id") Override this property if you want to use a different key for the 'id' attribute** ERXRest.typeKey** 123 -** ERXRest.nilKey (ERXRestFormatDelegate) 124 -** ERXRest.writeNilKey (ERXRestFormatDelegate) 125 -** ERXRest.pluralEntityNames (ERXRestFormatDelegate) 126 -** ERXRest.writeTypeKey (ERXRestFormatDelegate) 127 -** ERXRest.suppressTypeAttributesForSimpleTypes (ERXXmlRestWriter) 128 -*** (default "false") If set to true, primitive types, like type = "datetime", won't be added to the output 20 +** ERXRest.idKey 21 +** ERXRest.typeKey 22 +** ERXRest.nilKey 23 +** ERXRest.writeNilKey 24 +** ERXRest.pluralEntityNames 25 +** ERXRest.writeTypeKey 26 +** ERXRest.suppressTypeAttributesForSimpleTypes 129 129 ** ERXRest.strictMode 130 -*** 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 131 -*** 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 132 -*** ERXRouteResults: (default "true") If set to true, creating a ressource will return status code 201 Created, if set to false, will return 200 OK 133 133 ** ERXRest.pluralEntityNames (ERXRouteRequestHandler) 134 134 ** ERXRest.routeCase (ERXRouteRequestHandler) 135 135 ** ERXRest.lowercaseEntityNames (ERXRouteRequestHandler) ... ... @@ -147,18 +147,8 @@ 147 147 ** er.rest.timestampFormat.secondary 148 148 ** er.rest.timestampFormatter 149 149 ** er.rest.rfcDateFormat 150 -** er.rest.jodaTime 151 -** ERXRest.transactionsEnabled (default 'false') ERXRestTransactionRequestAdaptor 152 -** ERXRest.maxEventsPerTransaction (default '50') ERXRestTransactionRequestAdaptor 153 -** ERXRest.accessControlAllowRequestHeaders (ERXRouteController) 154 -** ERXRest.accessControlAllowRequestMethods (ERXRouteController) 155 -** ERXRest.defaultFormat (ERXRouteController) 156 -*** (default "xml") Allow you to set the default format for all of your REST controllers 157 -** ERXRest.allowWindowNameCrossDomainTransport (ERXRouteController) 158 -** ERXRest.accessControlMaxAge (ERXRouteController) 159 -*** (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. 160 -** ERXRest.accessControlAllowOrigin (ERXRouteController) 161 -*** Set the value to '**' to enable all origins. See [[https://developer.mozilla.org/En/HTTP_access_control#Access-Control-Allow-Origin]]** 45 +** ERXRest.transactionsEnabled 46 +** ERXRest.maxEventsPerTransaction 162 162 * JSON Schema 163 163 ** {{code}} 164 164 /something?schema=true ... ... @@ -172,6 +172,31 @@ 172 172 } 173 173 {{/code}} 174 174 60 +Same Origin policy 61 +Transactions 62 +HTML vs other formats 63 +Response representation 64 +Missing route 65 +Missing object 66 +POJO objects 67 +Headers 68 +Caching 69 +Adding new format 70 +Security 71 +strictMode 72 +Workflow 73 +Query arguments and RXRestFetchSpecification 74 +ERXRestNameRegistry 75 +MapClassDescription / NSDictionaryClassDescription 76 + 77 +ERXRestUtils 78 +Properties 79 +er.rest.dateFormat 80 +er.rest.timestampFormat 81 +er.rest.rfcDateFormat 82 + 83 +request > route 84 + 175 175 Application(ERXApplication).dispatchRequest(WORequest) line: 2051 176 176 ERXRouteRequestHandler(WOActionRequestHandler).//handleRequest(WORequest) line: 221 177 177 ERXRouteRequestHandler.getRequestHandlerPathForRequest(WORequest) line: 782// ... ... @@ -203,3 +203,13 @@ 203 203 | ERXRest.strictMode | ERXRest.strictMode 204 204 \\ | 205 205 ERXRouteController 116 + 117 +Properties 118 + 119 +ERXRest.accessControlAllowRequestHeaders 120 +ERXRest.accessControlAllowRequestMethods 121 +ERXRest.defaultFormat 122 +ERXRest.strictMode 123 +ERXRest.allowWindowNameCrossDomainTransport 124 +ERXRest.accessControlMaxAge 125 +ERXRest.accessControlAllowOrigin