api-platform: [2.4.0-beta2] Wrong JSON-LD and JSON single item response - ignores serialization groups?
On 2.4.0-beta1 when I ask for single resource (/api/contents/1.jsonld) I get:
{
"@context":"/api/contexts/Content",
"@id":"/api/contents/1",
"@type":"Content",
"id":1,
"contentType":"homepage",
"modifiedAt":"2018-06-19T16:18:20+00:00",
"publishedAt":"2019-01-06T19:14:53+00:00",
"fieldValues":{
"title":"Labore reprehenderit dolorem repellendus asperiores.",
"image":{
"filename":"kitten.jpg",
"alt":"A cute kitten",
"path":"/thumbs/kitten.jpg?w=240&h=160&area=files"
},
"teaser":"Ut qui dolor debitis esse. Maiores alias repellat maxime ut voluptatem. Eum esse reprehenderit expedita necessitatibus. Animi hic eveniet sed et.\n\nEst pariatur incidunt aut iste. Rem aut nihil et ut natus perspiciatis. Dolore veritatis ab sed repellendus quo deleniti qui.\n\nQui laudantium corrupti labore quidem veniam nemo qui. Sit dolore atque et cumque libero. Omnis earum repellendus hic aut vero aut voluptatem. Ea non magni eligendi occaecati numquam.",
"content":"Minus sed repellendus corporis nemo. Aut aut veniam at aut aliquid. Architecto tempora quia neque numquam voluptas sint est delectus.\n\nUnde voluptatem animi non ut aut dicta. Omnis vero dolorum aliquid laudantium magni asperiores. Et tempora eveniet soluta modi occaecati.\n\nEa dolorum tenetur voluptatum temporibus illo fuga. Quibusdam et doloribus debitis omnis sed. Tempora in aperiam ullam non odit. Praesentium sunt accusantium dolorem commodi labore eum nostrum quia.",
"contentlink":"Aut ea iusto est iste est odit.",
"slug":"labore-reprehenderit-dolorem-repellendus-asperiores"
},
"taxonomyValues":[
],
"authorName":"Jane Doe",
"extras":{
"title":"Labore reprehenderit dolorem repellendus asperiores.",
"image":{
"filename":"kitten.jpg",
"alt":"A cute kitten",
"path":"/thumbs/kitten.jpg?w=240&h=160&area=files"
},
"excerpt":"Labore reprehenderit dolorem repellendus asperiores. Ut qui dolor debitis esse. Maiores alias …",
"link":"/homepage/labore-reprehenderit-dolorem-repellendus-asperiores",
"editLink":"/bolt/edit/1"
}
}
Which is correct.
But after bumping version to 2.4.0-beta2 I get:
{
"@context":"/api/contexts/Content",
"@id":"/api/contents",
"@type":"hydra:Collection",
"hydra:member":[
1,
"homepage",
"labore-reprehenderit-dolorem-repellendus-asperiores",
{
"id":3,
"displayName":"Jane Doe",
"username":"jane_admin",
"email":"jane_admin@example.org"
},
{
"title":"Labore reprehenderit dolorem repellendus asperiores.",
"image":{
"filename":"kitten.jpg",
"alt":"A cute kitten",
"path":"/thumbs/kitten.jpg?w=240&h=160&area=files"
},
"teaser":"Ut qui dolor debitis esse. Maiores alias repellat maxime ut voluptatem. Eum esse reprehenderit expedita necessitatibus. Animi hic eveniet sed et.\n\nEst pariatur incidunt aut iste. Rem aut nihil et ut natus perspiciatis. Dolore veritatis ab sed repellendus quo deleniti qui.\n\nQui laudantium corrupti labore quidem veniam nemo qui. Sit dolore atque et cumque libero. Omnis earum repellendus hic aut vero aut voluptatem. Ea non magni eligendi occaecati numquam.",
"content":"Minus sed repellendus corporis nemo. Aut aut veniam at aut aliquid. Architecto tempora quia neque numquam voluptas sint est delectus.\n\nUnde voluptatem animi non ut aut dicta. Omnis vero dolorum aliquid laudantium magni asperiores. Et tempora eveniet soluta modi occaecati.\n\nEa dolorum tenetur voluptatum temporibus illo fuga. Quibusdam et doloribus debitis omnis sed. Tempora in aperiam ullam non odit. Praesentium sunt accusantium dolorem commodi labore eum nostrum quia.",
"contentlink":"Aut ea iusto est iste est odit.",
"slug":"labore-reprehenderit-dolorem-repellendus-asperiores"
},
[
],
{
"title":"Labore reprehenderit dolorem repellendus asperiores.",
"image":{
"filename":"kitten.jpg",
"alt":"A cute kitten",
"path":"/thumbs/kitten.jpg?w=240&h=160&area=files"
},
"excerpt":"Labore reprehenderit dolorem repellendus asperiores. Ut qui dolor debitis esse. Maiores alias …",
"link":"/homepage/labore-reprehenderit-dolorem-repellendus-asperiores",
"editLink":"/bolt/edit/1"
},
"published",
"fa-home",
"2018-03-25T03:58:54+00:00",
"2018-06-19T16:18:20+00:00",
"2019-01-06T19:14:53+00:00",
"2019-02-13T22:01:37+00:00"
],
"hydra:totalItems":13,
"hydra:search":{
"@type":"hydra:IriTemplate",
"hydra:template":"/api/contents/1.jsonld{?id,id[],contentType,contentType[],status,status[],createdAt,createdAt[],modifiedAt,modifiedAt[],publishedAt,publishedAt[],depublishedAt,depublishedAt[]}",
"hydra:variableRepresentation":"BasicRepresentation",
"hydra:mapping":[
{
"@type":"IriTemplateMapping",
"variable":"id",
"property":"id",
"required":false
},
{
"@type":"IriTemplateMapping",
"variable":"id[]",
"property":"id",
"required":false
},
{
"@type":"IriTemplateMapping",
"variable":"contentType",
"property":"contentType",
"required":false
},
{
"@type":"IriTemplateMapping",
"variable":"contentType[]",
"property":"contentType",
"required":false
},
{
"@type":"IriTemplateMapping",
"variable":"status",
"property":"status",
"required":false
},
{
"@type":"IriTemplateMapping",
"variable":"status[]",
"property":"status",
"required":false
},
{
"@type":"IriTemplateMapping",
"variable":"createdAt",
"property":"createdAt",
"required":false
},
{
"@type":"IriTemplateMapping",
"variable":"createdAt[]",
"property":"createdAt",
"required":false
},
{
"@type":"IriTemplateMapping",
"variable":"modifiedAt",
"property":"modifiedAt",
"required":false
},
{
"@type":"IriTemplateMapping",
"variable":"modifiedAt[]",
"property":"modifiedAt",
"required":false
},
{
"@type":"IriTemplateMapping",
"variable":"publishedAt",
"property":"publishedAt",
"required":false
},
{
"@type":"IriTemplateMapping",
"variable":"publishedAt[]",
"property":"publishedAt",
"required":false
},
{
"@type":"IriTemplateMapping",
"variable":"depublishedAt",
"property":"depublishedAt",
"required":false
},
{
"@type":"IriTemplateMapping",
"variable":"depublishedAt[]",
"property":"depublishedAt",
"required":false
}
]
}
}
Also JSON response is wrong in beta2 - looks like it ignores serialization groups.
Response in beta2 (invalid):
{
"id":1,
"contentType":"homepage",
"slug":"labore-reprehenderit-dolorem-repellendus-asperiores",
"author":{
"id":3,
"displayName":"Jane Doe",
"username":"jane_admin",
"email":"jane_admin@example.org"
},
"fields":{
"title":"Labore reprehenderit dolorem repellendus asperiores.",
"image":{
"filename":"kitten.jpg",
"alt":"A cute kitten",
"path":"/thumbs/kitten.jpg?w=240&h=160&area=files"
},
"teaser":"Ut qui dolor debitis esse. Maiores alias repellat maxime ut voluptatem. Eum esse reprehenderit expedita necessitatibus. Animi hic eveniet sed et.\n\nEst pariatur incidunt aut iste. Rem aut nihil et ut natus perspiciatis. Dolore veritatis ab sed repellendus quo deleniti qui.\n\nQui laudantium corrupti labore quidem veniam nemo qui. Sit dolore atque et cumque libero. Omnis earum repellendus hic aut vero aut voluptatem. Ea non magni eligendi occaecati numquam.",
"content":"Minus sed repellendus corporis nemo. Aut aut veniam at aut aliquid. Architecto tempora quia neque numquam voluptas sint est delectus.\n\nUnde voluptatem animi non ut aut dicta. Omnis vero dolorum aliquid laudantium magni asperiores. Et tempora eveniet soluta modi occaecati.\n\nEa dolorum tenetur voluptatum temporibus illo fuga. Quibusdam et doloribus debitis omnis sed. Tempora in aperiam ullam non odit. Praesentium sunt accusantium dolorem commodi labore eum nostrum quia.",
"contentlink":"Aut ea iusto est iste est odit.",
"slug":"labore-reprehenderit-dolorem-repellendus-asperiores"
},
"taxonomies":[
],
"extras":{
"title":"Labore reprehenderit dolorem repellendus asperiores.",
"image":{
"filename":"kitten.jpg",
"alt":"A cute kitten",
"path":"/thumbs/kitten.jpg?w=240&h=160&area=files"
},
"excerpt":"Labore reprehenderit dolorem repellendus asperiores. Ut qui dolor debitis esse. Maiores alias …",
"link":"/homepage/labore-reprehenderit-dolorem-repellendus-asperiores",
"editLink":"/bolt/edit/1"
},
"status":"published",
"icon":"fa-home",
"createdAt":"2018-03-25T03:58:54+00:00",
"modifiedAt":"2018-06-19T16:18:20+00:00",
"publishedAt":"2019-01-06T19:14:53+00:00",
"depublishedAt":"2019-02-13T22:01:37+00:00"
}
Reponse in beta1 (valid):
{
"id":1,
"contentType":"homepage",
"modifiedAt":"2018-06-19T16:18:20+00:00",
"publishedAt":"2019-01-06T19:14:53+00:00",
"fieldValues":{
"title":"Labore reprehenderit dolorem repellendus asperiores.",
"image":{
"filename":"kitten.jpg",
"alt":"A cute kitten",
"path":"/thumbs/kitten.jpg?w=240&h=160&area=files"
},
"teaser":"Ut qui dolor debitis esse. Maiores alias repellat maxime ut voluptatem. Eum esse reprehenderit expedita necessitatibus. Animi hic eveniet sed et.\n\nEst pariatur incidunt aut iste. Rem aut nihil et ut natus perspiciatis. Dolore veritatis ab sed repellendus quo deleniti qui.\n\nQui laudantium corrupti labore quidem veniam nemo qui. Sit dolore atque et cumque libero. Omnis earum repellendus hic aut vero aut voluptatem. Ea non magni eligendi occaecati numquam.",
"content":"Minus sed repellendus corporis nemo. Aut aut veniam at aut aliquid. Architecto tempora quia neque numquam voluptas sint est delectus.\n\nUnde voluptatem animi non ut aut dicta. Omnis vero dolorum aliquid laudantium magni asperiores. Et tempora eveniet soluta modi occaecati.\n\nEa dolorum tenetur voluptatum temporibus illo fuga. Quibusdam et doloribus debitis omnis sed. Tempora in aperiam ullam non odit. Praesentium sunt accusantium dolorem commodi labore eum nostrum quia.",
"contentlink":"Aut ea iusto est iste est odit.",
"slug":"labore-reprehenderit-dolorem-repellendus-asperiores"
},
"taxonomyValues":[
],
"authorName":"Jane Doe",
"extras":{
"title":"Labore reprehenderit dolorem repellendus asperiores.",
"image":{
"filename":"kitten.jpg",
"alt":"A cute kitten",
"path":"/thumbs/kitten.jpg?w=240&h=160&area=files"
},
"excerpt":"Labore reprehenderit dolorem repellendus asperiores. Ut qui dolor debitis esse. Maiores alias …",
"link":"/homepage/labore-reprehenderit-dolorem-repellendus-asperiores",
"editLink":"/bolt/edit/1"
}
}
About this issue
- Original URL
- State: closed
- Created 5 years ago
- Comments: 17 (9 by maintainers)
Actually the issue is that now the ItemNormalizer might be called even though:
json-ld,json-api,halBecause the
AbstractItemNormalizer::supportsNormalizationalmost always returntrueand thatApiPlatform\Core\Serializer\ItemNormalizerhas no format check.@JarJak the comment from @dunglas is something we need to implement so that you don’t face the issue by upgrading. Sorry for the inconvenience.
I can confirm that removing \JsonSerializable from Entity (Resource class) fixes the issue. However there is still something to think about: why in this example a single resource becomes a collection?
Proposal:
It will fix such issues.