bentools / api-platform-create-resource
Allows creating resources through PUT operations.
Requires
- api-platform/core: ~2.5
- symfony/config: ~3.0|~4.0|~5.0
- symfony/dependency-injection: ~3.0|~4.0|~5.0
- symfony/http-kernel: ~3.0|~4.0|~5.0
This package is auto-updated.
Last update: 2024-10-08 05:32:32 UTC
README
This bundle is an add-on to API Platform that brings resource creation through the PUT verb.
Kind of upsert in REST.
This means you can send the following request:
PUT /api/books/d9a5551f-f188-45e4-a034-00b744a08a31
Content-Type: application/ld+json
Accept: application/ld+json
{"name": "Book title"}
If /api/books/d9a5551f-f188-45e4-a034-00b744a08a31
doesn't exist, this resource will be created,
otherwise its content will be replaced; as of the specification.
This way, your client doesn't have to care whether or not it should POST or PUT, it always PUTs. This involves that you delegate the resource ID generation to the client side (which may be done with UUIDs / ULIDs for example).
Installation
composer require bentools/api-platform-create-resource:0.1.*
Important notice: This bundle must be loaded before ApiPlatformBundle
to work properly.
Configuration
Resource classes which expect this behavior must be explicitely listed:
# config/packages/api_platform_create_resource.yaml api_platform_create_resource: allowed_classes: App\Entity\Book: ~
Resource instanciation
If your entity/object needs a factory service to instanciate it,
you can implement your own BenTools\ApiPlatform\CreateResource\Factory\ItemFactoryInterface
and reference it as a service:
# config/packages/api_platform_create_resource.yaml api_platform_create_resource: allowed_classes: App\Entity\Book: '@App\Services\BookFactory'
Tests
Who cares? 😄
License
MIT.