Как правильно JSONAPI разместить несколько связанных сущностей в одном запросе? - PullRequest
1 голос
/ 10 октября 2019

В какой-то момент в моем гипотетическом приложении я хочу создать несколько связанных сущностей разных типов в одном запросе для повышения эффективности. В приведенном ниже примере я сериализирую запрос таким образом, чтобы он содержал данные о новом Пользователе, а также связанный с ним Аватар.

// POST /api/users
{
    data: {
        attributes: { ... },
        type: 'user',
        relationships: {
            avatar: {
                data: {
                    attributes: { ... }
                    type: 'avatar',
                }
            }
        }
    }
}

Вопрос в том, каким будет правильный / рекомендуемый способ (еслиесть ли) сделать это в JSONAPI?

1 Ответ

2 голосов
/ 10 октября 2019

Создание или обновление нескольких ресурсов в одном запросе пока не поддерживается спецификацией JSON: API. Однако есть предложение для расширения Atomic Operations для предстоящей версии 1.1 спецификации.

Но в большинстве случаев такая функция не требуется для эффективности. Вы можете даже увеличить нагрузку на сервер, объединив несколько запросов на создание или обновление в один. Выполнение нескольких запросов параллельно с HTTP / 2 в настоящее время обходится дешево.

Это может быть не так эффективно, как выполнение одного запроса, если операции зависят друг от друга (например, необходимо дождаться создания сообщения перед комментарием). для этого поста можно было бы создать). Но в этом случае атомные транзакции также являются серьезным требованием. Это основной драйвер для этого расширения.

Итак, чтобы ответить на ваш вопрос:

  • В настоящее время он не поддерживается в JSON: спецификации API.
  • Есть хорошие шансычто он будет поддерживаться в следующей версии (v1.1) расширением.
  • Если эффективность - единственная причина, по которой вы ищете такую ​​функцию, она может вам вообще не понадобиться.
...