mirror of
https://github.com/danieleteti/delphimvcframework.git
synced 2024-11-16 00:05:53 +01:00
2.7 KiB
2.7 KiB
3.0.0 breaking changes
RenderListAsProperty<T>
has been removed from TMVCController. You can set such kind of specialized serializations in your custom base controller.RenderJSONArrayAsProperty
has been removed from TMVCController. You can set such kind of specialized serializations in your custom base controller.Render
has been removed from TMVCController (was deprecated).Render(TJSONValue)
has been removed from TMVCController (use Render(TObject)).- Trying to deserialize a
TJSONNull
the target instance will not be freed anymore (consistency with serialize). Context.Request.BodyAsJSONObject
dosen't exist any more. Use BodyAs or the following pattern to migrate:
JSON := TJSONObject.ParseJSONValue(Context.Request.Body) as TJSONObject;
try
if not Assigned(JSON) then
raise EMVCException.Create('Invalid JSON');
// do something here
finally
JSON.Free;
end;
TMVCConfigKey
moved to unitMVCFramework.Commons
.TMVCMimeType
was renamed toTMVCMediaType
.TMVCController.Render;
no parameter method do not exist anymore. If the return is a ResponseStream, use theRenderResponseStream;
.TMVCController.PushJSONToView;
was renamed toPushToView
and Removed SystemJSON dependency, use the ToJSON method if necessary.- There is no more a default view engine for Server Side Views (before 3.0 there was mustache).
- Mustache engine is no more the only view engine available. Now you can implement all the view engines you need (check the serversideviewsprimer).
- On Linux there is no built-in available view engine available. In other words, using only the built-in classes, you cannot use server side views on linux (dmustache is not compatible on linux).
- HTTP File Upload doesn't work on Linux because of a bug in Delphi 10.2 (https://quality.embarcadero.com/browse/RSP-17216).
[MapperJSONNaming(TJSONNameCase.JSONNameLowerCase)]
now must be changed in[MVCNameCase(ncLowerCase)]
[MapperJSONNaming(TJSONNameCase.JSONNameUpperCase)]
now must be changed in[MVCNameCase(ncUpperCase)]
TRESTClient
Every reference to TJSON* has been removed from the TRESTClient public interface. To port the existing code, you have to include MVCFramework.RESTClient.SystemJSONUtils
and change your code as following:
Before
lMyJSONObject := Response.BodyAsJsonObject.Clone as TJSONObject;
After
delphi lMyJSONObject := TSystemJSON.BodyAsJsonObject(Response) as TJSONObject; try //use the object finally lMyJSONObject.Free; end;
The memory allocated for the TJSONValue descendant (e.g. TJSONObject, TJSONArray and so on) is no more managed by the TRESTClient itself but must be feed by the calling code.