Получить URL картинок из JSON API

Главные вкладки

Аватар пользователя southjuniper southjuniper 25 августа 2018 в 22:49

Приветствую.
Использую модуль json api в drupal 8 для spa.
При запросе http://мойсайт/jsonapi/node/hotels?_format=api_json приходит json , но в нем нет урлов картинок (примененных в стилях), в этом json нашел объект relationships в котором то самое поле картинок в нем объект links

"relationships": {
                "type": {
                    "data": {
                        "type": "node_type--node_type",
                        "id": "547c08cc-ccac-402e-be06-cee29ae57180"
                    },
                    "links": {
                        "self": "http://d8rest/jsonapi/node/hotels/a0d33f4a-15ac-4357-bb0f-bb10931c70e2/relationships/type",
                        "related": "http://d8rest/jsonapi/node/hotels/a0d33f4a-15ac-4357-bb0f-bb10931c70e2/type"
                    }
                },
                "field_img": {
                    "data": [
                        {
                            "type": "file--image",
                            "id": "d571400d-1622-4b8a-9eec-12d39219e123",
                            "meta": {
                                "alt": "",
                                "title": "",
                                "width": 1280,
                                "height": 850
                            }
                        }
                    ],
                    "links": {
                        "self": "http://d8rest/jsonapi/node/hotels/a0d33f4a-15ac-4357-bb0f-bb10931c70e2/relationships/field_room_img",
                        "related": "http://d8rest/jsonapi/node/hotels/a0d33f4a-15ac-4357-bb0f-bb10931c70e2/field_room_img"
                    }
                }
            }

То есть мне надо еще дополнительно делать запрос по ссылке указанный в объекте links ?

Может кто то подскажет, как мне сразу одним запросом получить все данные о объекте с урлами картинок. Спасибо

Комментарии

Аватар пользователя Orion76 Orion76 26 августа 2018 в 9:23
1

По спецификации JSON API, необходимо в запрос добавить параметр include=
И в нем через запятую перечислить поля-связи, которые необходимо подгрузить к "основной" сущности..
В Вашем случае это поле "field_img" (include=field_img)

http://jsonapi.org/format/#fetching-includes

В drupal 8 с JSON API работать пока не приходилось, возможно ошибаюсь,
скорее всего запрос должен быть таким:

http://мойсайт/jsonapi/node/hotels?include=field_img

в ответе появится секция included примерно такая:
http://jsonapi.org/format/#document-compound-documents

В ней будет сущность поля field_img - "полностью", со всеми доступными полями.

Аватар пользователя gun_dose gun_dose 26 августа 2018 в 11:26
1

Выше ответили правильно. Но это будут оригиналы картинок. Для стилей нужно ставить Consumer image styles. Но как там их запрашивать, хз, я ни разу не пользовался, но думаю в документации к модулю есть.