Delphi framework for multi-tier REST/JSON HTTP/HTTPS application server development and ORM remoting.
v2.8 (February 15, 2018)Version history
- New : TXDataClient.Count method. Allows retrieving the number of entities in a specific resource endpoint, optionally using a query filter
- New : TQueryParser.AddMethod allows registering custom SQL Functions to be called from XData query API.
- New : TMS RADical WEB enabled! The TMS framework for front-end Web development, TMS RADical WEB has been released and TMS XData is immediately a first-class citizen of this new ecosystem.
- New : MultiTentant Demo included in distribution shows how to use XData with multi-tentant applications (multiple databases being accessed by the same server).
- New : /$model built-in URL returns metadata for the whole XData API.
- Improved : A connection was being retrieved from the pool even when the context manager was not being used by a service operation.
- Fixed : Service operations invoked via GET method using enumerated type parameters are now supported.
- New : TXDataRequestHandler.ManagedObjects property.
- New : Support for default parameter values in service operations from non-Delphi clients (default parameters were already supported in Delphi clients).
- New : Several new types supported in service operations. Generic arrays, Generics lists of primitive types, Sets, TStrings type.
- New : OpenAPI/Swagger support.
- New : JsonNamingStrategy attribute.
- New : JsonInclude attribute in PODO classes.
- New : JsonEnumValues attribute.
- Fixed : Error when using params of type TDate (TDateTime was not affected) in service operations (Regression).
- Fixed : Design-time wizard icon not showing correctly in Delphi 10.2 Tokyo.
- New : XDataProperty and XDataExcludeProperty attributes.
- New : TXDataSeverModule.UnknownMemberHandling property.
- New : Support for passing parameters by reference in service operations.
- New : JsonProperty and JsonIgnore attributes.
- New : Filter functions startswith, endswith and contains.
- New : Filter function concat.
- Fixed : Using TStream as a parameter for service operations was causing "JSON converter not found" error.
- New : Linux support using Delphi 10.2 Tokyo and later.
- Fixed : Location header of POST responses now uses host of the client request, not the host configured in XData module.
- New : Delphi 10.2 Tokyo Support
- Fixed : Server-side stack overflow when trying to load a proxy property sent by the client, if the parent entity of that proxy was merged into the current Object Manager
- New : Demo project showing authentication using JWT (JSON Web Token)
- Fixed : XData Server Wizard generating corrupted source code when TMS Component Pack was installed
- Fixed : Sporadic server error loading proxied lists sent by the client
- Fixed : JWT encoding not working on XE6
- New : Url convention now allows $count path segment to retrieve number of entities in a resource.
Fixed : TXDataClient.Service
failing for Android clients when compiling in Release config
- Fixed : RefCount property was wrongly being serialized in PODO objects from mobile clients
- New : TXDataServerModule.SerializeInstanceType property controls how xdata type metadata will appear in JSON response
- New : TXDataServerModule.SerializeInstanceRef property controls how instances of same object will be represented in JSON response
- New : Support for entities that have associations in ID (primary key containing foreign keys)
- New : Support for Variant-type parameters in service operations when using GET HTTP method.
New : Support for Nullable
values in PODO classes
- New : Breaking change: TXDataServerModule.PutMode property controls how PUT will behave at server-side
- New : $expand query option allows clients to have full control on how associated entities appear in JSON response.
- Improved : Errors on query syntax now return http code 400 instead of 500
- Fixed : JSON Proxies (@xdata.proxy) sent by the client were not being solved when reading such properties at server-side
- Fixed : Association references (@xdata.ref) were not being solved when receiving entities in service operations parameters.
- New : TXDataServerModule.SetEntitySetPermissions allows configuring what operations are available in each resource type
- New : Service operations can now receive and return any type of object. This increases flexibility significantly as you can use any type of object for structure input/output parameters, or to send/receive DTO classes, etc.
- New : Service operations can now receive and return TJSONAncestor objects (Delphi XE6 and up only). This allows full control over the JSON request and response.
- New : Service operations can now receive and return TCriteriaResult objects, making it easy to return Aurelius query results that use projections.
- New : Server-Side Events allow subscribing listeners events and perform additional server-side logic
- New : Method TXDataModelBuilder.RemoveEntitySet for more flexibility when building XData models.
- New : JWT (Json Web Token) authentication and Basic authentication, thanks to new TMS Sparkle
- New : Delphi 10.1 Berlin support
- New : Authentication and authorization mechanism, based on TMS Sparkle
- New : $inlinecount query option allow retrieving the total number of entities when using paged results
- Improved : TXDataOperationContext.Current now also available in entity resources
- Improved : All server-side operation (entity CRUD, service operation execution) are now performed in database transactions
- New : Design-time wizard to create a XData Server with a few clicks
- Fixed : Service operation using enumerated types as parameters or function results not working properly
- Fixed : EntitySet requests were not taking xdata-expandlevel header into consideration. This is a breaking change.
- New : Delphi 10 Seattle support
- New : TXDataServerModule.DefaultExpandLevel allows defining the expand level of JSON responses when it's not defined by client request
- New : TXDataOperationContext Request and Response properties gives full control for service implementations to customize the processing of client requests
- New : TXDataClient.HttpClient property provides low level access to the Http client and allows using OnSendingRequest events to customize requests
- New : Several built-in functions available to increase flexibility when querying objects in REST requests. New available functions are Upper, Lower, Length, Substring, Position, Year, Month, Day, Hour, Minute and Second
- Fixed : TXDataClient Get, Delete, Patch and Put operations were broken when using entities with composite id
- Fixed : POST requests not working correctly with entities with composite key
- Fixed : Data Modification requests sending content-type header with parameter (for example, ";charset=UTF8") were causing errors
- New : URIPathSegment attribute allows specifying a different name for operation/service to be used in URL
- New : HttpMethod attribute allows specifying the HTTP method a service operation should respond to
- Fixed : GET requests with query order was sometimes causing the same column to appear multiple times in a "ORDER BY" SQL clause
- New : Support for Delphi XE8
- New : Support for CORS (Cross-origin resource sharing) preflighted requests
- Improved : Installer
- New : TXDataClient methods Get, Post, Put, Delete and List allows easy and high-level access to XData server objects from Delphi clients
- New : Server support for "x-http-method-override" header (allowing clients to tunnel HTTP methods to server through POST requests)
- New : Android and iOS support for XData client objects
- Fixed : Service operations returning nil entities should respond with status code 404
- Fixed : Issues with floating-point literals in Query URL with non-English server systems
- New : UserName and Password properties in TXDataServerModule for basic authentication protection
- New : Service Operations allow adding custom business logic to your server using interfaces and methods
- New : Multi-Model design makes it easy to create multiple servers with different mapping, types and service operations
- Fixed : Malfunctioning with $skip and $top query options
- New : Added Delphi XE7 support
for Delphi XE2, XE3, XE4, XE5, XE6, XE7, XE8, 10 Seattle, 10.1 Berlin, 10.2 Tokyo (Prof/Enterprise/Architect)
View licensing FAQ
- License for commercial use: Single developer license, Small team license, Site license
- Includes full source code
- Free 2 year updates and new releases
- Free priority support through email and forum