PHPackages                             zulfajuniadi/tinyrest - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. zulfajuniadi/tinyrest

ActiveLibrary[API Development](/categories/api)

zulfajuniadi/tinyrest
=====================

Single file JSON REST Server

0.0.2(11y ago)19ISCPHPPHP &gt;=5.4.0

Since Oct 7Pushed 11y ago1 watchersCompare

[ Source](https://github.com/zulfajuniadi/tinyrest)[ Packagist](https://packagist.org/packages/zulfajuniadi/tinyrest)[ RSS](/packages/zulfajuniadi-tinyrest/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (2)Dependencies (2)Versions (3)Used By (0)

\#TinyRest
----------

[](#tinyrest)

\###What is it?

A quick and dirty way to get a php REST backend running with two lines of code. Not to be used on production. I use it mainly to test client side javascript / mobile apps during development.

\###Installation

```
composer require zulfajuniadi/tinyrest:0.*
```

\###Usage

Let's say my little app has two restful endpoints:

- /projects
- /tasks

By instantiating TinyREST like so:

```
new Tinyrest\Handle(['projects', 'todos']);
```

I now have a fully functional backend for my app that handles these routes:

Projects Routes:

  Method Edpoint Description Response   GET /projects Get list of all projects  {"response":\[{"title":"Uber Project","id":"5434319cb4b5a"}, {...}, {...}\],"error":false,"status":200}    GET /projects/:id Get detail of a project  {"response":{"title":"Uber Project","id":"5434319cb4b5a"},"error":false,"status":200}    POST /projects Create new project  {"response":{"title":"Uber Project","id":"5434319cb4b5a"},"error":false,"status":201}    PUT /projects/:id Update a project detail  {"response":{"title":"Uber Project","id":"5434319cb4b5a"},"error":false,"status":200}    DELETE /projects/:id Delete a project  {"response":{"title":"Uber Project","id":"5434319cb4b5a"},"error":false,"status":200}  Todos Routes:

  Method Edpoint Description Response   GET /todos Get list of all todos  {"response":\[{"title":"Buy some milk","id":"5434319cbd234"}, {...}, {...}\],"error":false,"status":200}    GET /todos/:id Get detail of a todo  {"response":{"title":"Buy some milk","id":"5434319cbd234"},"error":false,"status":200}    POST /todos Create new todo  {"response":{"title":"Buy some milk","id":"5434319cbd234"},"error":false,"status":201}    PUT /todos/:id Update a todo detail  {"response":{"title":"Buy some milk","id":"5434319cbd234"},"error":false,"status":200}    DELETE /todos/:id Delete a todo  {"response":{"title":"Buy some milk","id":"5434319cbd234"},"error":false,"status":200}  \###Examples

View the index.php file in the examples folder.

\###Event Listeners

TinyREST exposes the `on` method that enables you to bind to events on an endpoint. Let's say I were to log all data created on the projects, I would do so like:

```
    $TinyRest = new Tinyrest\Handle(['projects', 'todos'], '../data/');
    $projects = $TinyRest->router('projects');

    // Do something when a new project is created
    $listener_id = $projects->on('create', function($new_data){
        // Log $new_data creation
    });

    // To stop listening to the event
    $projects->off('create', $listener_id);
```

Events fired:

  Event Closure Arguments Description   **create** 1. $new\_data

  Fired every time a new record is created   **update** 1. $new\_data
2. $old\_data

  Fired every time a record is updated   **delete** 1. $old\_data

  Fired every time a record is deleted \###Data Persistance

TinyREST stores each endpoint data inside it's own .json file in the public directory. To change the directory, provide a second argument to point to your preferred data directory as per example below:

```
new Tinyrest\Handle(['projects', 'todos'], '../data/');
```

\###Contributions Welcome

You contributions are very much appreciated mainly in these areas:

- Providing unit tests
- Bug reporting and fixing
- Documentations

Please fork this repository and create a pull request for it to be merged.

\###License

**ISC**

Copyright (c) 2014, Zulfa Juniadi bin Zulkifli

Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

###  Health Score

23

—

LowBetter than 27% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity6

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity49

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

2

Last Release

4238d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/ebfeadc84fdfc9fcc8d0a217f20a5df981163a0caaa4faaed9aa496b20c9bb68?d=identicon)[zulfajuniadi](/maintainers/zulfajuniadi)

---

Top Contributors

[![zulfajuniadi](https://avatars.githubusercontent.com/u/207807?v=4)](https://github.com/zulfajuniadi "zulfajuniadi (11 commits)")

### Embed Badge

![Health badge](/badges/zulfajuniadi-tinyrest/health.svg)

```
[![Health](https://phpackages.com/badges/zulfajuniadi-tinyrest/health.svg)](https://phpackages.com/packages/zulfajuniadi-tinyrest)
```

###  Alternatives

[b13/slimphp-bridge

Provides a middleware for registering Slim PHP applications within TYPO3 Frontend Sites

2047.2k1](/packages/b13-slimphp-bridge)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
