
RAD Studio 12.3 brings several improvements to RAD Server that address common pain points and add new functionality. Let’s take a look at what’s new.
Table of Contents
Consistent Date/Time Formats Across Requests
One issue that’s now resolved is the inconsistency in date/time formats between GET and LIST requests. RAD Studio 12.3 introduces roFDDateTimeFormat, a boolean variable flag in the EMS.DatasetResource unit that gives you control over date/time format standardization.
When enabled (the default value), date/time values in GET, PUT, and POST JSON responses use the FireDAC JSON serialization format. If you prefer to keep the previous behaviour, you can simply set the value of this new flag to false.
Improved Security for Configuration Files
Security gets a nice upgrade with the option to avoid storing plain text values for MasterSecret and AppSecret in the emsserver.ini file. Instead, these sensitive values can now be stored hashed using md5.
The EMSDevServer interface now includes an “Obfuscate Keys” button that converts plain text MasterSecret and AppSecret values to the hashed format automatically, reducing the risk of credential exposure.
Instance-Wide Custom Variables
A particularly useful addition is support for instance-wide custom variables. These can be stored in the emsserver.ini [Variables] section and accessed throughout your application.
Consider a real-world scenario where you’re deploying the same RAD Server application across development, testing, and production environments. Each environment might need different database connection strings, file paths, or API endpoints.
Here’s how you could set up environment-specific variables in your emsserver.ini:
Then, in your custom resource code, you can access these values:
The TEMSVariablesService.ExpandString method lets you process strings containing variables:
A special feature is that the PathTemplate property of TEMSFileResource components automatically expands variables from the emsserver.ini file without needing to call ExpandString:
When the server runs, it will automatically replace $(FileStoragePath) with the actual value from your configuration, making it easy to create environment-specific file paths.
This feature simplifies configuration management across environments and makes your RAD Server applications more portable and easier to maintain.
Hide Unwanted Endpoints
The new [EndpointHide] attribute lets you selectively hide endpoints that you don’t want to expose. This is especially valuable when working with TEMSDataSetResource and TEMSFileResource components. For example:
This allows you to restrict which operations are allowed on a resource, improving both security and API clarity.
Improved UTF-8 Support in RAD Server and WebStencils
RAD Studio 12.3 significantly improves how RAD Server handles UTF-8 characters. This enhancement extends to WebStencils as well, ensuring proper support for international character sets in your applications.
Speaking of WebStencils, this release also introduces two additional improvements worth noting:
- Access to nested classes and objects using a straightforward dot notation syntax: @MyObject.SubObject.PropertyName
- More flexible processing of the “@” symbol when it’s unrelated to WebStencils directives, eliminating the need to double it in headers and similar contexts
For example, if you have a customer object with address information, you can now directly access nested properties in your templates:
Previously, you would have needed to flatten these objects or use more complex workarounds. This new dot notation makes templates cleaner and more intuitive to write.
These WebStencils enhancements complement the RAD Server improvements, providing better tools for building complete server solutions.
All these RAD Server improvements in version 12.3 focus on practical issues that developers face in real-world applications. The changes to date handling, security features, and endpoint management directly address feedback from our community, making the platform even more robust for building modern REST APIs and web applications.
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition