REST 4.0.0
After over a year of work the fourth major release is released. The main focus of this iteration is to support TYPO3 v9
LTS and to clean up the DataProvider's
interface.
If an installation uses a custom Data Provider, it must be adapted to the new interface.
A collection of the most important changes can be found below.
Breaking changes
- Prepend the name of custom HTTP headers with "X-" (#63e0082)
- Languages are used for Domain Models and must be mapped in TypoScript (#6848078, FAQs)
- Requested language has precedence over Site language (#3703e59)
- Clean up the Object Manager (#fab4139)
- Fix Dispatcher entry point and add return type (Fix #58, #064a641)
- Replace headers configured in
settings.responseHeaders
(#3589149) - Add scalar types for the CRUD Handler (#2a0ea1b)
- Do not call
update()
if__identity
is given (#ca2657a) - Drop TYPO3 7 LTS Support (#82c4fa2)
- Convert the incoming property parameter into a valid property key (changes to
DataProviderInterface::getModelProperty()
, #53ce98c) - Prefer to call a property getter method over calling
_getProperty()
(changes toDataProviderInterface::getModelProperty()
, #53ce98c) - Add CORS headers to failed requests (#ba3f86c)
- Require PHP 7.1 or later (#bd043c7)
- Virtual Object Persistence Manager and Backend require a Query instance as argument (#52dca42, #dac8157)
- Remove deprecated
getCacheLiveTime()
(#a901e2e) - Remove deprecated methods (#cc0e58a)
Features and improvements
- Add support for new Site Handling and improve language handling (#aa1404e, #61eb3fd, #aa1404e)
- Add
cors.allowedOrigins
to define a list of allowed CORS origins (#b8a9e80) - Add Parameter Type
{raw}
(Fix #56, #3047fad) - Add additional debugging headers (#b461372, #ab26785)
- Update the icons !new icon (#eaf54d5)
- Add route for OPTIONS requests to the Auth Handler (#6fcda9a)
- Replace some
@inject
annotations with constructor or method injection (#94780af) - Add the Resource Type to the cache tags (#c17a736)
- Add scalar type checks (#23595da, #e16bbba, #1dab787, #7d1648b)
- Add factory methods for
PATCH
andOPTIONS
requests (#b151929) - Respect the Cache Lifetime from the Resource Type configuration and use "lifetime" in names (#68b0099)
- Change the "camelCase to underscore" method for
normalizeResourceType()
(#556d3ff) - Add support to limit the number of results in
listAll()
for custom extensions (#a4da600)
Data Provider
- Cleanup the Data Provider and CRUD Handler APIs (#f808610, #9027618)
- Add
isModelNew()
to allow overriding the check for new instances (#070d375) - Add
withResourceType()
and strict checks for the Format (#fe9b05c) - Add
countAllModels()
to Data Providers (#98b8cdb) - Prioritize
Vendor\Namespace
classes (#8ffdb9a)
Object Manager
- Also detect interfaces in
getImplementationFromResourceConfiguration()
(#1f58306) - Add support to specify the DataProvider in TypoScript (#7e4c93a)
- Decouple Object Manager from TYPO3 (#fe3e106, #926b94f)
Virtual Objects
- Add support for
Constraint
objects (#cf5d6b3) - Add scalar types for
WhereClauseBuilder
method arguments (#a915832) - Move the Operator constants into a separate interface (#a947b2c)
- Add constructor for Query (#2d4a403)
- Add SQL Expression object (#5f156f5)
- Enhance the possibilities for subclasses of the Where Clause Builder (#58997ae)