Over the past two years I’ve been working on a PHP framework specifically designed to cater to those wanting to develop customized RESTful APIs for their product as easily and quickly as possible.
Working from the influence of much larger framework, Lumen (a similar piece of software developed by Taylor Otwell), Synful aims to be a much more light-weight solution than most of the current products on the market.
While Synful is it’s own framework, it does make use of a lot of other libraries including Eloquent ORM by Taylor Otwell, which is the same ORM used for Lumen. You can find a list of these frameworks and libraries on Synful’s Credits Page.
When Synful was originally conceived in July of 2016, it was only meant to be a fun project where my aim was to go “against the grain”, hence the name “Synful”.
Synful’s name was designed as a sort of mash up of the two different words; the word “sin” (“transgression against divine law”) and the word “RESTful”. Although the idea of going “against the grain” has since left the list of influences for Synful, the name has stuck with me and will likely not leave the framework.
$ sudo ab -t 60 -c 5 http://127.0.0.1/example/getip ... Requests per second: 6545.17 [#/sec] (mean)
Along with standard features you would expect to find in a web framework such as Middle-ware, Controllers and Database Management, Synful comes packaged with a lot of custom features that make developing your custom API much easier.
A few of Synful’s Unique Features
- An advanced API key management system with access restrictions including endpoint selection, IP firewalls, security levels and an advanced control system for managing these keys.
- Built in rate limiting for API Keys, endpoints and IPs that uses the Token Bucket Algorithm.
- Advanced serialization support for a per-endpoint input/output with a very customizable implementation.
- A packaged Vagrant development environment for building your API.
- Plus many more features!
New features are being added on a fairly regular basis, and I’m very open to requests.
An example of a Request Handler in Synful
You can find more information about this framework by visiting it’s GitHub Repository and Wiki Pages.
Don’t forget to star the repository and watch it if you want to keep up with the development!