ОБНОВЛЕНИЕ Комментарий от OP сделал этот ответ излишним.Оставить это, как это может помочь кому-то.Если вы используете полную Apigility, то это для вас.
Для одной версии V1.2. * Были выпущены в Июль 2016 , поэтому я бы предложил вам начатьс обновлением вашего приложения.
Кроме того, почему вы пытаетесь "почистить" это как бы?Удаление прямых ссылок для поиска отдельных объектов не имеет смысла при получении коллекции.
Вы делаете вызов "GET / tags" (Коллекция), но хотите получить один объект.
Чтобы получить один элемент, выполните "GET / tags"/: id "call, например" GET /tags/1".
Ответ одного элемента должен быть таким (может отличаться, используя для этого современную Apigility):
(обратите внимание, местный dev env, поэтому "http")
Одиночный вызов : "GET http://api.loc/coordinates/1"
{
"latitude": "33.6062068",
"longitude": "58.7053709",
"id": 1,
"_links": {
"self": {
"href": "http://api.loc/coordinates/1"
}
}
}
Сбор вызова : "GET http://api.loc/coordinates"
{
"_links": {
"self": {
"href": "http://api.loc/coordinates?page=1"
},
"first": {
"href": "http://api.loc/coordinates"
},
"last": {
"href": "http://api.loc/coordinates?page=10"
},
"next": {
"href": "http://api.loc/coordinates?page=2"
}
},
"_embedded": {
"coordinates": [
{
"latitude": "33.6062068",
"longitude": "58.7053709",
"id": 1,
"_links": {
"self": {
"href": "http://api.loc/coordinates/1"
}
}
},
{
"latitude": "60.1948871",
"longitude": "19.2423547",
"id": 2,
"_links": {
"self": {
"href": "http://api.loc/coordinates/2"
}
}
},
{ ... } another 247 results
]
},
"page_count": 10,
"page_size": 25,
"total_items": 249,
"page": 1
}
Ссылки должны создаваться с использованием класса LinkExtractor
, для которого вы можете использовать стратегии через конфигурацию.Если вы используете Apigility (который использует модуль zfcampus/zf-rest
, который вы упомянули), вы можете применять такие стратегии:
[ ... ] // more config
'doctrine-hydrator' => [
'Company\\V1\\Rest\\Company\\CompanyHydrator' => [
'entity_class' => \Path\To\Company::class,
'object_manager' => 'doctrine.entitymanager.orm_default',
'by_value' => true,
'strategies' => [
'country' => \ZF\Doctrine\Hydrator\Strategy\EntityExtract::class,
'currency' => \ZF\Doctrine\Hydrator\Strategy\EntityLink::class,
'currencies' => \ZF\Doctrine\Hydrator\Strategy\CollectionExtract::class,
],
[ ... ] // more config
Они предоставлены ZF Doctrine Hydrator Тома Андерсона package.
Стратегии *Link
предоставляют ссылки на объекты, ссылки, которые можно использовать, например, в вызовах GET.
Стратегии *Extract
прямо гарантируют, что сущность гидратируется в результати вернулся вместо ссылки.
Как специально для удаления этого _links
бита.Если вы используете zf-rest
, потому что вы используете Apigility, и поэтому ссылки вызываются конфигурацией для zf-hal
, тогда вы можете использовать опцию 'force_self_link' => false
в конфигурации 'zf-hal' => []
.Это должно быть сделано за набор.
См. эту страницу документации Apigility и найдите "force_self_link".
force_self_link - логическое значение;установить, должна ли автоматически создаваться ссылка на себя для объекта.По умолчанию true (так как рекомендуется).
Я бы согласился с документами: рекомендуется оставить это включенным.
ОБНОВЛЕНИЕ Комментарий от OP сделал этот ответ излишним.Оставить это, как это может помочь кому-то.