如何重命名 Json ld 上下文中的 @id - API 平台 [已解决]
How rename the @id in Json ld Context - API Platform [Resolved]
我在 API 工作,我的 Json-ld
有问题
是否可以更改 Json-ld 上下文中的@id?
实体:
/**
* @ApiResource(
* normalizationContext={"groups"={"question_get"}},
* denormalizationContext={"groups"={"question_post"}},
* itemOperations={
* "get" = {
* "enable_max_depth"=true,
* "force_eager"=false,
* },
* "put" = {
* "denormalization_context"={"groups"={"question_put"}}
* }
* },
* collectionOperations={
* "get"= {
* "normalization_context"={"groups"={"questions_get"}},
* },
* "post"
* },
* attributes={
* "enable_max_depth"="true",
* "pagination_client_items_per_page"=true,
* },
* )
*/
class Question
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
...
Json :
"@context": "/api/contexts/Question",
"@id": "/api/questions",
"@type": "hydra:Collection",
"hydra:member": [
{
"@id": "/api/questions/32",
"@type": "Question",
"id": 32,
...
以及我想要的:
"@id": "/questions"
我想保留路线“/api/question”,我只是想改变我实体的@id,而不是关系。
编辑: 我找到了一种方法,我使用了规范化器:https://api-platform.com/docs/core/identifiers/#custom-identifier-normalizer
#App\src\Serializer\ApiNormalizer.php
...
public function normalize($object, $format = null, array $context = [])
{
$data = $this->decorated->normalize($object, $format, $context);
$data['@id'] = substr($data['@id'], 4);
return $data;
}
...
您可以在您的上下文中提供 alias/shortening:
"type" : "@type",
"id" :"@id"
这使您可以摆脱文档和代码中的 @
-signs。
我在 API 工作,我的 Json-ld
有问题
是否可以更改 Json-ld 上下文中的@id?
实体:
/**
* @ApiResource(
* normalizationContext={"groups"={"question_get"}},
* denormalizationContext={"groups"={"question_post"}},
* itemOperations={
* "get" = {
* "enable_max_depth"=true,
* "force_eager"=false,
* },
* "put" = {
* "denormalization_context"={"groups"={"question_put"}}
* }
* },
* collectionOperations={
* "get"= {
* "normalization_context"={"groups"={"questions_get"}},
* },
* "post"
* },
* attributes={
* "enable_max_depth"="true",
* "pagination_client_items_per_page"=true,
* },
* )
*/
class Question
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
...
Json :
"@context": "/api/contexts/Question",
"@id": "/api/questions",
"@type": "hydra:Collection",
"hydra:member": [
{
"@id": "/api/questions/32",
"@type": "Question",
"id": 32,
...
以及我想要的:
"@id": "/questions"
我想保留路线“/api/question”,我只是想改变我实体的@id,而不是关系。
编辑: 我找到了一种方法,我使用了规范化器:https://api-platform.com/docs/core/identifiers/#custom-identifier-normalizer
#App\src\Serializer\ApiNormalizer.php
...
public function normalize($object, $format = null, array $context = [])
{
$data = $this->decorated->normalize($object, $format, $context);
$data['@id'] = substr($data['@id'], 4);
return $data;
}
...
您可以在您的上下文中提供 alias/shortening:
"type" : "@type",
"id" :"@id"
这使您可以摆脱文档和代码中的 @
-signs。