ERRest In Depth
- ERXRestContext
- contains the editing context and an userInfo dictionnary
- will be populated with er.rest.dateFormat, er.rest.timestampFormatter and er.rest.timestampFormat (read only for non-HTML responses)
- want to change the time format for a specific controller?
protected ERXRestContext createRestContext() {
ERXRestContext restContext = new ERXRestContext(editingContext());
restContext.setUserInfoForKey("yyyy-MM-dd", "er.rest.dateFormat");
restContext.setUserInfoForKey("yyyy-MM-dd", "er.rest.timestampFormat");
return restContext;
}
- you just need to override createRestContext() in your controller if you want to add other stuff to the context (a user, etc.)
- Properties
- ERXRest.idKey
- ERXRest.typeKey
- ERXRest.nilKey
- ERXRest.writeNilKey
- ERXRest.pluralEntityNames
- ERXRest.writeTypeKey
- ERXRest.suppressTypeAttributesForSimpleTypes
- ERXRest.strictMode
- ERXRest.pluralEntityNames (ERXRouteRequestHandler)
- ERXRest.routeCase (ERXRouteRequestHandler)
- ERXRest.lowercaseEntityNames (ERXRouteRequestHandler)
- ERXRest.parseUnknownExtensions (ERXRouteRequestHandler)
- (default "true") If set to "false", will return a 404 status code if the format doesn't exist
- ERXRest.missingControllerName (ERXRouteRequestHandler)
- (default "ERXMissingRouteController") Allow you to specify which controller to use when a route doesn't exist
- er.rest.rfcDateFormat
- er.rest.dateFormat
- er.rest.dateFormat.primary
- er.rest.dateFormat.secondary
- er.rest.dateFormatter
- er.rest.timestampFormat
- er.rest.timestampFormat.primary
- er.rest.timestampFormat.secondary
- er.rest.timestampFormatter
- er.rest.rfcDateFormat
- ERXRest.transactionsEnabled
- ERXRest.maxEventsPerTransaction
- JSON Schema
- /something?schema=true
public WOActionResults indexAction() {
if (isSchemaRequest()) {
return schemaResponse(showFilter());
}
protected boolean isSchemaRequest() {
return request().stringFormValueForKey("schema") != null;
}
- /something?schema=true
Same Origin policy
Transactions
HTML vs other formats
Response representation
Missing route
Missing object
POJO objects
Headers
Caching
Adding new format
Security
strictMode
Workflow
Query arguments and RXRestFetchSpecification
ERXRestNameRegistry
MapClassDescription / NSDictionaryClassDescription
ERXRestUtils
Properties
er.rest.dateFormat
er.rest.timestampFormat
er.rest.rfcDateFormat
request > route
Application(ERXApplication).dispatchRequest(WORequest) line: 2051
ERXRouteRequestHandler(WOActionRequestHandler).handleRequest(WORequest) line: 221
ERXRouteRequestHandler.getRequestHandlerPathForRequest(WORequest) line: 782
ERXRouteRequestHandler(WOActionRequestHandler).handleRequest(WORequest) line: 259
PagesController(ERXRouteController).performActionNamed(String) line: 1328
PagesController(ERXRouteController).performActionNamed(String, boolean) line: 1385
PagesController(ERXRouteController).performRouteActionNamed(String) line: 1510
PagesController(ERXRouteController).performActionWithArguments(Method, Object...) line: 1559
...
PagesController.mainPageAction() line: 20
ERXRouteRequestHandler
Properties | |
ERXRest.missingControllerName | (default "ERXMissingRouteController") |
ERXRest.parseUnknownExtensions | ERXRest.parseUnknownExtensions |
ERXRest.pluralEntityNames | ERXRest.pluralEntityNames |
ERXRest.routeCase | ERXRest.routeCase |
ERXRest.lowercaseEntityNames | ERXRest.lowercaseEntityNames |
ERXMissingRouteController is the controller that is used when no route can be found. It's "missing" action is loaded.
Properties | ||
ERXRest.strictMode | ERXRest.strictMode | ERXRouteController |
Properties
ERXRest.accessControlAllowRequestHeaders
ERXRest.accessControlAllowRequestMethods
ERXRest.defaultFormat
ERXRest.strictMode
ERXRest.allowWindowNameCrossDomainTransport
ERXRest.accessControlMaxAge
ERXRest.accessControlAllowOrigin