-
-
Notifications
You must be signed in to change notification settings - Fork 900
feat(laravel): laravel component #5882
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
not working for the moment. |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. |
Is there a specific way that we need to add serialization support for other types other than [2024-04-26 20:34:38] local.ERROR: Serialization for the format "jsonapi" is not supported. {"exception":"[object] (Symfony\\Component\\Serializer\\Exception\\UnsupportedFormatException(code: 0): Serialization for the format \"jsonapi\" is not supported. at /Users/steve/Herd/laravel-api-platform/vendor/symfony/serializer/Serializer.php:134)
[stacktrace]
#0 /Users/steve/Herd/core/src/State/Processor/SerializeProcessor.php(65): Symfony\\Component\\Serializer\\Serializer->serialize(Object(ApiPlatform\\Laravel\\Eloquent\\Paginator), 'jsonapi', Array)
#1 /Users/steve/Herd/core/src/State/Processor/WriteProcessor.php(42): ApiPlatform\\State\\Processor\\SerializeProcessor->process(Object(ApiPlatform\\Laravel\\Eloquent\\Paginator), Object(ApiPlatform\\Metadata\\GetCollection), Array, Array)
#2 /Users/steve/Herd/core/src/Hydra/State/HydraLinkProcessor.php(52): ApiPlatform\\State\\Processor\\WriteProcessor->process(Object(ApiPlatform\\Laravel\\Eloquent\\Paginator), Object(ApiPlatform\\Metadata\\GetCollection), Array, Array)
#3 /Users/steve/Herd/core/src/Laravel/Controller/ApiPlatformController.php(90): ApiPlatform\\Hydra\\State\\HydraLinkProcessor->process(Object(ApiPlatform\\Laravel\\Eloquent\\Paginator), Object(ApiPlatform\\Metadata\\GetCollection), Array, Array)
#4 /Users/steve/Herd/laravel-api-platform/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): ApiPlatform\\Laravel\\Controller\\ApiPlatformController->__invoke(Object(Illuminate\\Http\\Request))
#5 /Users/steve/Herd/laravel-api-platform/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(43): Illuminate\\Routing\\Controller->callAction('__invoke', Array)
#6 /Users/steve/Herd/laravel-api-platform/vendor/laravel/framework/src/Illuminate/Routing/Route.php(259): Illuminate\\Routing\\ControllerDispatcher->dispatch(Object(Illuminate\\Routing\\Route), Object(ApiPlatform\\Laravel\\Controller\\ApiPlatformController), '__invoke')
#7 /Users/steve/Herd/laravel-api-platform/vendor/laravel/framework/src/Illuminate/Routing/Route.php(205): Illuminate\\Routing\\Route->runController()
#8 /Users/steve/Herd/laravel-api-platform/vendor/laravel/framework/src/Illuminate/Routing/Router.php(806): Illuminate\\Routing\\Route->run()
#9 /Users/steve/Herd/laravel-api-platform/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(144): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#10 /Users/steve/Herd/core/src/Laravel/ApiPlatformMiddleware.php(38): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#11 /Users/steve/Herd/laravel-api-platform/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): ApiPlatform\\Laravel\\ApiPlatformMiddleware->handle(Object(Illuminate\\Http\\Request), Object(Closure), '_api_/api/books...')
#12 /Users/steve/Herd/laravel-api-platform/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(119): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#13 /Users/steve/Herd/laravel-api-platform/vendor/laravel/framework/src/Illuminate/Routing/Router.php(805): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#14 /Users/steve/Herd/laravel-api-platform/vendor/laravel/framework/src/Illuminate/Routing/Router.php(784): Illuminate\\Routing\\Router->runRouteWithinStack(Object(Illuminate\\Routing\\Route), Object(Illuminate\\Http\\Request))
#15 /Users/steve/Herd/laravel-api-platform/vendor/laravel/framework/src/Illuminate/Routing/Router.php(748): Illuminate\\Routing\\Router->runRoute(Object(Illuminate\\Http\\Request), Object(Illuminate\\Routing\\Route))
#16 /Users/steve/Herd/laravel-api-platform/vendor/laravel/framework/src/Illuminate/Routing/Router.php(737): Illuminate\\Routing\\Router->dispatchToRoute(Object(Illuminate\\Http\\Request))
#17 /Users/steve/Herd/laravel-api-platform/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(200): Illuminate\\Routing\\Router->dispatch(Object(Illuminate\\Http\\Request))
#18 /Users/steve/Herd/laravel-api-platform/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(144): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}(Object(Illuminate\\Http\\Request))
#19 /Users/steve/Herd/laravel-api-platform/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#20 /Users/steve/Herd/laravel-api-platform/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#21 /Users/steve/Herd/laravel-api-platform/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#22 /Users/steve/Herd/laravel-api-platform/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#23 /Users/steve/Herd/laravel-api-platform/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(40): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#24 /Users/steve/Herd/laravel-api-platform/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\\Foundation\\Http\\Middleware\\TrimStrings->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#25 /Users/steve/Herd/laravel-api-platform/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#26 /Users/steve/Herd/laravel-api-platform/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#27 /Users/steve/Herd/laravel-api-platform/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(99): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#28 /Users/steve/Herd/laravel-api-platform/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#29 /Users/steve/Herd/laravel-api-platform/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php(62): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#30 /Users/steve/Herd/laravel-api-platform/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\\Http\\Middleware\\HandleCors->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#31 /Users/steve/Herd/laravel-api-platform/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(39): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#32 /Users/steve/Herd/laravel-api-platform/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\\Http\\Middleware\\TrustProxies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#33 /Users/steve/Herd/laravel-api-platform/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(119): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#34 /Users/steve/Herd/laravel-api-platform/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(175): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#35 /Users/steve/Herd/laravel-api-platform/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(144): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter(Object(Illuminate\\Http\\Request))
#36 /Users/steve/Herd/laravel-api-platform/public/index.php(51): Illuminate\\Foundation\\Http\\Kernel->handle(Object(Illuminate\\Http\\Request))
#37 /Applications/Herd.app/Contents/Resources/valet/server.php(151): require('/Users/steve/He...')
#38 {main}
"} |
https://github.com/api-platform/core/pull/5882/files#diff-1f34d8685c9bbcc2037ef47c41cb6dac916a0fe6fc06e2047b9635e35fa13527R396 it's missing jsonapi/hal normalizers indeed. |
I assume you know how to do this? I am still getting up to speed with some of these things! |
Indeed, I plan to continue working on this mid-june. |
aab48a6
to
346b164
Compare
src/Laravel/ApiPlatformProvider.php
Outdated
|
||
$this->app->bind(SchemaFactoryInterface::class, JsonApiSchemaFactory::class); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
at some point we may want to not load these when jsonapi
format is not enabled, for now it doesn't impact the runtime much I propose to leave that to future improvement.
502a98d
to
d738493
Compare
3467ff6
to
f5c2c85
Compare
merging now that the CI is all green, it's still missing some features (security / filters) and it'll be easier to review afterwards. |
* feat(laravel): laravel component * try to skip laravel * feat(jsonapi): component * feat(laravel): json api support (needs review) * work on relations * relations (needs toMany) + skolem + IRI to resource * links handler * ulid * validation * slug post * remove deprecations * move classes * fix tests * fix tests metadata * phpstan * missing class * fix laravel tests * fix stan
Could we get an example usage with laravel model? Specially the normalizationContext, denormalizationContext stuff. Heres what I am trying to do?
|
@shahzaibtariqbutt check https://github.com/api-platform/laravel-demo/pull/2/files and please open a new issue is you need, thanks! |
Laravel support in API Platform
Note that this is still in development there are a few things missing (see todolist)
Must do:
src/Laravel
to create functional testsapiProperties
#5885)Some ideas:
To try this:
composer update
, I added#[ApiResource]
on the model.