Apigility 1.0.4
We are pleased to announce the immediate availability of Apigility 1.0.4!
This is our fourth maintenance release of Apigility.
IBM i Support
This release contains a number of fixes to ensure the ability to use Apigility on IBM i. Among them:
- We are pinning support to Zend Framework 2.3.2 and above, which contains updates supporting DB2:
- Full transaction support.
- Fixed LIMIT support, allowing for paginated DB result sets.
- Fixes to database-backed authentication
- The ability to specify database driver options via the Admin UI. Most DB2
connections need additional driver options specified, and you can now do so via the UI.
UI Improvements
One lingering issue we've had reported is an error when creating APIs: the UI reports an error, but the API has been created. We made several patches that, in aggregate, should resolve these issues going forward:
- We discovered that our promise chains in the Admin UI were not optimally constructed, and could potentially raise errors under the appropriate conditions; these have been fixed.
- We introduced comprehensive cache control headers to prevent client-side caching of Admin API calls.
- We introduced a timeout between successful completion of API creation and deletion calls, and subsequent fetching of the API list from the Admin API. In working with Julien Guittard, we were able to find an optimal timeout that resolves the issue.
Additionally, for those users using Apache to serve the Admin UI and Admin API, we have stopped using backslashes in URI identifiers (Apache rejects URI-encoded slashes by default).
Other fixes were also made that are detailed under the "zf-apigility-admin" header below.
Documentation fixes
zf-apigility-documentation was not using the correct configuration key to discover input filters, which meant it was not reporting fields at all. This had further implications for zf-apigility-documentation-swagger, which was then unable to expose models based on those fields. This situation is now resolved.
Collections
While Apigility has supported retrieving collections in REST services, creating, replacing, updating, or deleting them has been an exercise left to the developer previously. With this release, field definitions can now be used to validate the items passed to collections, giving collections first-class support.
Console
zf-console was extensively updated, with many contributions and ideas from Zend's Slavey Karadzhov. These include:
- Simplification of mapping the command name to the route. By default the command name is considered the first argument of the route now.
- Command handlers may now be specified in the configuration via the
handlerkey for a command. - A number of useful CLI-specific filters are now provided, including an
Explodefilter (split comma or other delimited arguments to an array), aQueryStringfilter (specify arguments in query string format), and aJsonfilter (specify arguments in JSON). - Better error handling and error reporting.
- The ability to generate autocompletion scripts for your CLI commands.
zf-console is shaping up as a capable microframework for CLI commands!
Thank You!
Many thanks to everyone who contributed fixes, big or small, towards this release!
Issues closed:
zf-apigility-admin
- Timeout delay upon API creation and deletion
- Introduced timeouts to API create/delete actions
- Disable HTTP caching for Admin API
- url-encoded backslashes cause issues in Apache
- File permissions upon resources files creation
- Revise promise chains
- Allow defining DB adapter driver options
- Resolves #210 by correcting the dead link
- Undefined index: input_filter_specs
- OAuth2 Mongo Adapter cannot be created successfully
- zf-hal option 'render_collections' can break Apigility admin
- Feature request: Ability to disable pagination from admin ui
- Creating new API fails with "API not found"
- Can't Edit OAuth Adapter
zf-apigility-documentation
zf-apigility-documentation-swagger
zf-apigility-skeleton
- Bump ZF2 version requirement
- Prefix config glob path
- Apache configuration
- Ensure default Apache site is disabled
zf-console
- Added out-of-the-box autocompletion help for all applications based on zf-console
- Better error handling
- Useful filters
- Allow setting handler in route configuration
- Simplify mapping the command name to the route
zf-content-validation
- Bug: Validation bypassed when POST is empty
- isCollection() method returning true for entities
- Problems concerning validating collections
zf-deploy
- Remove include of application configuration
- Cannot validate deployment.xml if zfdeploy.phar is in a folder with spaces
- Updated to use features from latest master of zf-console
- Execute composer.phar with the PHP binary running zf-deploy
zf-hal
- 422 status when my entity has no identifier on creation
- Possible issue on HAL collection first link of the paginator.
- Allow -1 for page size
- Links in metadata map are no longer honored
- Update Hal Plugin to support entities with $id = 0
- Can't return a collection object with embedded entities when content negotiation is set to Json
zf-mvc-auth
deny_by_default inverts permission rules
Support for OAuth2 Token in Query String / POST Body
zf-oauth2
- Use content negotiation in AuthController
- Ensure bodyParams is an array before creating request
- Update PdoAdapter.php
- refactored the class to support better reuse when extending the class
- Separate MongoClient creation from MongoAdapter factory
zf-rest: - Allow returning entities without identifiers from creation routines
- Allow Header tied to 'id' param.
- Can't attach to a resource's event using the SharedEventManager
- Update RestController to handle entities with $id = 0
- Can't return a collection object with embedded entities when content negotiation is set to Json