Вчера благодаря совету уважаемого Gun_Doze я узнал о полезном модуле Subrequests, который оптимизирует множественные запросы JSONAPI путём их объединения.
Для клиентской части существует аналогичный NPM модуль.
Также был обнаружен другой полезный модуль Decoupled Router, который создает "умный" REST endpoint.
Проблема в том, что документации как таковой нет, есть только пара заметок, покрывающих вопросы создания blueprint'ов, синтаксис запросов и т.д.
Я справился с JS-частью, но застрял в конфигурации Drupal. Есть ли какой-то внятный источник, который показал бы, как создать route с помощью этого Decoupled Router, и чтобы он слушал мои реквесты в формате Subrequests, которые поступают из React?
Заранее спасибо!
Как создать кастомный route, который будет слушать Subrequests
Главные вкладки
Лучший ответ
1
Никакого роута создавать не нужно. Он уже создан. Нужно кидать POST-запрос на /subrequests и всё
Комментарии
Интересно а как здесь ребята в демо сделали https://www.contentacms.org -> EXAMPLE CONSUMERS -> React + Next.js Running demo Website
https://contenta-react-next.now.sh/
https://github.com/contentacms/contenta_react_next
Никакого роута создавать не нужно. Он уже создан. Нужно кидать POST-запрос на /subrequests и всё
В документации к NPM-версии они прекрепляют блюпринт с помощью params при этом используют GET. А если я хочу POST, блюпринт таким же образом прикрепляется?
params: {
query: JSON.stringify(blueprint),
}
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
Вот эта фраза из док. к Друпал-модулю меня смущает.
Получается, что для GET и POST разные форматы и методы отправки?
Ой, хз, я npm-пакетов на эту тему не ставил. Почитал доки по пхп и написал свою приблуду, которая собирает реквесты и шлёт их пост-запросом.
Всё работает вот так:
method: 'post',
url: `${prodURL}/subrequests`,
auth: {
username: `${fetchUsername}`,
password: `${fetchPassword}`
},
data: JSON.stringify(blueprint)
})
А вот какой блюпринт получился:
requestId: this.randomId(1, 1000000000),
uri: `${prodURL}/jsonapi/node/puzzle/${uuid}/relationships/field_albums`,
action: 'create',
body: JSON.stringify({
"data": [
{
"type": "node--album",
"id": album_uuid
}
]
}),
headers: {
'Accept': 'application/vnd.api+json',
'Content-Type': 'application/vnd.api+json',
'X-CSRF-Token': this.props.data.xcsrfToken,
'Authorization': auth
}
}