laravel-protocontroller maintained by goed
Laravel ProtoController
A Laravel package providing a Route::protocontroller() macro for protobuf-over-HTTP resource controllers with FormRequest reuse.
Installation
composer require teunw/laravel-protocontroller
Usage
Register protobuf resource routes with message types and FormRequest bindings:
Route::protocontroller('users', UserController::class, [
'messages' => [
'store' => CreateUserRequest::class,
'update' => UpdateUserRequest::class,
],
'form_requests' => [
'store' => UserFormRequest::class,
'update' => UserFormRequest::class,
],
'responses' => [
'index' => UserCollectionResponse::class,
'show' => UserResponse::class,
'store' => UserResponse::class,
'update' => UserResponse::class,
],
]);
The macro auto-registers protobuf.decode and protobuf.encode middleware aliases.
Publish the config:
php artisan vendor:publish --tag=protocontroller-config
How it works
- Incoming requests are intercepted by the
protobuf.decodemiddleware, which deserializes the protobuf body into a Laravel-friendly structure. - If a
form_requestis mapped for the action, validation runs against the decoded data via a standard FormRequest. - The controller receives a clean
ProtobufRequestwith validated data. - The response returned by the controller is serialized back to protobuf by the
protobuf.encodemiddleware using the mappedresponseclass.