Используя Symfony 4, Doctrine и API Platform, я настроил простой API для получения заданий, а также службы и вспомогательных служб, связанных с каждым заданием. Задания, службы и подуслуги являются их собственными сущностями - basi c getter and setters - и при запросе возвращается следующее.
{
"@context": "/api/contexts/Job",
"@id": "/api/jobs/6",
"@type": "Job",
"jobNo": "123789",
"created": "2020-01-29T09:51:29+01:00",
"service": {
"@id": "/api/services/1",
"@type": "Service",
"code": "MOVE",
"name": "Move"
},
"subService": {
"@id": "/api/sub_services/2",
"@type": "SubService",
"code": "EXP",
"name": "Export"
}
}
Я использую аннотации @Groups, чтобы определить, какие поля возвращаются субресурсы, но как исключить мета-поля @id, @type, которые не нужны.
В идеале, я бы хотел получить следующее:
{
"@context": "/api/contexts/Job",
"@id": "/api/jobs/6",
"@type": "Job",
"jobNo": "123789",
"created": "2020-01-29T09:51:29+01:00",
"service": {
"code": "MOVE",
"name": "Move"
},
"subService": {
"code": "EXP",
"name": "Export"
}
}
При наличии мета-полей на самом деле это не приносит никакого вреда, который я им не пользуюсь при вызове записи о работе, так как все, что мне нужно знать, это код и имя каждого.
Я подумал о создании двух новых виртуальных свойств, которые могли бы искать код и название услуги / субсервиса, но мне это кажется неэффективным.