The international conference on the API Platform Framework
The API Platform Conference 2024 is happening soon, and it's close to selling out.
API Platform 4, Caddy web server, Xdebug, AI... Enjoy two days of inspiring talks with our friendly community and our amazing speakers.
API Platform provides the possibility to extend the JSON-LD context of properties. This allows you to describe JSON-LD-typed
values, inverse properties using the @reverse
keyword and you can even overwrite the @id
property this way. Everything you define
within the following annotation will be passed to the context. This provides a generic way to extend the context.
<?php
// api/src/Entity/Book.php
namespace App\Entity;
use ApiPlatform\Metadata\ApiProperty;
use ApiPlatform\Metadata\ApiResource;
#[ApiResource(types: ['https://schema.org/Book'])]
class Book
{
// ...
#[ApiProperty(
types: ['https://schema.org/name'],
jsonldContext: [
'@id' => 'http://yourcustomid.com',
'@type' => 'http://www.w3.org/2001/XMLSchema#string',
'someProperty' => [
'a' => 'textA',
'b' => 'textB'
]
]
)]
public $name;
// ...
}
The generated context will now have your custom attributes set:
GET /contexts/Book
{
"@context": {
"@vocab": "http://example.com/apidoc#",
"hydra": "http://www.w3.org/ns/hydra/core#",
"name": {
"@id": "http://yourcustomid.com",
"@type": "http://www.w3.org/2001/XMLSchema#string",
"someProperty": {
"a": "textA",
"b": "textB"
}
}
}
}
Note that you do not have to provide the @id
attribute. If you do not provide an @id
attribute, the value from iri
will be used.
It’s also possible to replace the Hydra context used by the documentation generator:
<?php
// api/src/Entity/Book.php
namespace App\Entity;
use ApiPlatform\Metadata\ApiResource;
use ApiPlatform\Metadata\Get;
#[ApiResource(operations: [
new Get(hydraContext: ['foo' => 'bar'])
])]
class Book
{
//...
}
# api/config/api_platform/resources.yaml
App\Entity\Book:
operations:
ApiPlatform\Metadata\Get:
hydraContext: { foo: 'bar' }
<?xml version="1.0" encoding="UTF-8" ?>
<!-- api/config/api_platform/resources.xml -->
<resources xmlns="https://api-platform.com/schema/metadata/resources-3.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://api-platform.com/schema/metadata/resources-3.0
https://api-platform.com/schema/metadata/resources-3.0.xsd">
<resource class="App\Entity\Book">
<operations>
<operation class="ApiPlatform\Metadata\Get">
<hydraContext>
<values>
<value name="foo">bar</value>
</values>
</hydraContext>
</operation>
</operations>
</resource>
</resources>
You can also help us improve the documentation of this page.
Made with love by
Les-Tilleuls.coop can help you design and develop your APIs and web projects, and train your teams in API Platform, Symfony, Next.js, Kubernetes and a wide range of other technologies.
Learn more