use JeromeJHipolito\ApiVersioning\Middleware\ApiVersionMiddleware;
use JeromeJHipolito\ApiVersioning\Middleware\ResolveVersionedController;
->withMiddleware(function (Middleware $middleware) {
$middleware->api(append: [
ApiVersionMiddleware::class,
ResolveVersionedController::class,
]);
})
use JeromeJHipolito\ApiVersioning\Traits\VersionAwareTrait;
class UserController extends Controller
{
use VersionAwareTrait;
public function show($id)
{
$user = User::find($id);
// Check version
if ($this->isVersionAtLeast('2.0.0')) {
return new V2\UserResource($user);
}
return new UserResource($user);
}
}
use JeromeJHipolito\ApiVersioning\Traits\VersionAwareResourceTrait;
class UserResource extends JsonResource
{
use VersionAwareResourceTrait;
public function toArray($request): array
{
return [
'id' => $this->id,
'name' => $this->name,
// Only in 1.1.0+
...$this->mergeWhenVersion('1.1.0', [
'profile_score' => $this->profile_score,
]),
// Only below 2.0.0 (deprecated)
...$this->mergeWhenVersionBelow('2.0.0', [
'legacy_field' => $this->old_data,
]),
];
}
}