PHPackages                             dmp/rest-bundle - 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. dmp/rest-bundle

ActiveSymfony-bundle[API Development](/categories/api)

dmp/rest-bundle
===============

DMP Rest bundle

1.0.1(1y ago)0537MITPHPPHP &gt;=8.1

Since Oct 14Pushed 1y ago1 watchersCompare

[ Source](https://github.com/Armenian/rest-bundle)[ Packagist](https://packagist.org/packages/dmp/rest-bundle)[ RSS](/packages/dmp-rest-bundle/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (10)Dependencies (21)Versions (19)Used By (0)

REST Bundle
===========

[](#rest-bundle)

This bundle provides convenient functionality to write simple and powerful JSON-based RPC controllers

How to use:
-----------

[](#how-to-use)

Add bundle `DMP\RestBundle\RestBundle` to your kernel.

Write controllers in a style:

```
class TestController
{

    #[Rest\Post("")]
    #[BodyConverter("request")]
    #[Rest\Serializable(statusCode: 201)]
    public function request(string $testCode, RequestDTO $request): ResponseDTO
    {
        ...
    }
}

```

where RequestDTO and ResponseDTO are Data Transfer Objects that should define Serialization and Validation rules for the fields

All routes should start with '/api/' (TODO: remove this hard-coded requirement)

Consult `tests/Fixtures/` directory for an overview of how to define Rest Controllers

BodyConverter
-------------

[](#bodyconverter)

Put `@BodyConverter` annotation (`DMP\RestBundle\Annotations\BodyConverter`) on a controller's action. Put the name of a DTO argument as a default argument to the annotation.

This will have the following effect: The `@dmp_rest.converter.request_body` service will try to deserialize the request body into the class of the DTO argument. The deserialized DTO is then validated (Symfony Validator is used, configure accordingly) The validated deserialized DTO is going to be passed as a value of the DTO argument in controller action.

Exceptions
----------

[](#exceptions)

Any validation error by default throws an exception (`DMP\RestBundle\Validation\ValidationException` to be precise). This is achieved via `@dmp_rest.validation_exception_throwing_body_converter` service (decorator).

An important caveat is that it relies on value of `dmp_rest.body_converter.validation_errors_argument` to be `validationErrors`(which is defined as a `const` `DMP\RestBundle\Validation\ValidationExceptionThrowingBodyConverterDecorator::VALIDATION_ERRORS_ARGUMENT_NAME`) Overriding that value will disable the decorator's ability to throw an exception which would cause unvalidated DTOs to be passed into controller actions.

If controller throws exception it will be converted into a response in the form

```
{
  "errors": [
    {
      "message": "Exception message",
    }
  ]
}
```

`DMP\RestBundle\Validation\ValidationException` is treated differently:

```
{
  "errors": [
    {
      "message": "Field value should be a valid email address.",
      "type": "body",
      "field": "email"
    },
    {
      "message": "Field value should not be blank.",
      "type": "body",
      "field": "password"
    }
  ]
}
```

###  Health Score

35

—

LowBetter than 80% of packages

Maintenance39

Infrequent updates — may be unmaintained

Popularity15

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity64

Established project with proven stability

 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 ~46 days

Total

18

Last Release

528d ago

Major Versions

0.10.2 → 1.0.02024-08-21

### Community

Maintainers

![](https://www.gravatar.com/avatar/0098f8fc19f0c1027a7d88f03c06c01b666c9a92c0fde943bdad446b05041701?d=identicon)[Armenian](/maintainers/Armenian)

---

Top Contributors

[![Armenian](https://avatars.githubusercontent.com/u/6642299?v=4)](https://github.com/Armenian "Armenian (23 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/dmp-rest-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/dmp-rest-bundle/health.svg)](https://phpackages.com/packages/dmp-rest-bundle)
```

###  Alternatives

[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.4k5.6M651](/packages/sylius-sylius)[sulu/headless-bundle

Bundle that provides controllers and services for using Sulu as headless content management system

55133.7k2](/packages/sulu-headless-bundle)[components-web-app/api-components-bundle

Creates a flexible API for a website's structure, reusable components and common functionality.

322.8k](/packages/components-web-app-api-components-bundle)

PHPackages © 2026

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