📡 You're offline — showing cached content
New version available!
Quick Access
Tutorials Zend Framework / Laminas REST API with Mezzio

REST API with Mezzio

5 min read Quiz at the end
Build REST APIs with Mezzio PSR-15 handlers returning JsonResponse with parsed body access.

Building REST APIs with Mezzio

use PsrHttpMessageResponseInterface;
use PsrHttpMessageServerRequestInterface;
use PsrHttpServerRequestHandlerInterface;
use LaminasDiactorosResponseJsonResponse;

class UserListHandler implements RequestHandlerInterface {
    public function __construct(private UserRepository $repo) {}

    public function handle(ServerRequestInterface $request): ResponseInterface {
        $params = $request->getQueryParams();
        $page   = (int)($params["page"] ?? 1);
        $users  = $this->repo->paginate($page, 10);
        return new JsonResponse(["data" => $users, "page" => $page]);
    }
}

class CreateUserHandler implements RequestHandlerInterface {
    public function handle(ServerRequestInterface $request): ResponseInterface {
        $data = $request->getParsedBody();
        // validate...
        $user = $this->repo->create($data);
        return new JsonResponse(["data" => $user], 201);
    }
}

// Error response
return new JsonResponse(["error" => "Not found"], 404);

// Content negotiation middleware
$app->pipe(ContentTypeMiddleware::class);  // set Accept/Content-Type headers
Topic Quiz · 2 questions

Test your understanding before moving on

1. What does PSR-15 define?
💡 PSR-15 defines RequestHandlerInterface and MiddlewareInterface for HTTP middleware.
2. What does handle() return in a PSR-15 RequestHandler?
💡 handle(ServerRequestInterface $request): ResponseInterface.