УСПОКОИТЕЛЬНЫЙ способ создать несколько объектов в одном запросе

использовать с пользовательской функцией для обработки множественного наследования с помощью es6

var aggregation = (baseClass, ...mixins) => {
    let base = class _Combined extends baseClass {
        constructor (...args) {
            super(...args)
            mixins.forEach((mixin) => {
                mixin.prototype.initializer.call(this)
            })
        }
    }
    let copyProps = (target, source) => {
        Object.getOwnPropertyNames(source)
            .concat(Object.getOwnPropertySymbols(source))
            .forEach((prop) => {
            if (prop.match(/^(?:constructor|prototype|arguments|caller|name|bind|call|apply|toString|length)$/))
                return
            Object.defineProperty(target, prop, Object.getOwnPropertyDescriptor(source, prop))
        })
    }
    mixins.forEach((mixin) => {
        copyProps(base.prototype, mixin.prototype)
        copyProps(base, mixin)
    })
    return base
}

class Colored {
    initializer ()     { this._color = "white" }
    get color ()       { return this._color }
    set color (v)      { this._color = v }
}

class ZCoord {
    initializer ()     { this._z = 0 }
    get z ()           { return this._z }
    set z (v)          { this._z = v }
}

class Shape {
    constructor (x, y) { this._x = x; this._y = y }
    get x ()           { return this._x }
    set x (v)          { this._x = v }
    get y ()           { return this._y }
    set y (v)          { this._y = v }
}

class Rectangle extends aggregation(Shape, Colored, ZCoord) {}

var rect = new Rectangle(7, 42)
rect.z     = 1000
rect.color = "red"
console.log(rect.x, rect.y, rect.z, rect.color)

115
задан 4 January 2009 в 18:42
поделиться

4 ответа

Хотя объемные операции (например, пакет создают) важны во многих системах, они официально не обращены стилем Архитектуры RESTful.

я нашел, что, ОТПРАВЛЯЯ набор, поскольку Вы предложили в основном работы, но проблемы возникают, когда необходимо сообщить об отказах в ответ на такой запрос. Такие проблемы хуже, когда многократные отказы происходят по различным причинам или когда сервер не поддерживает транзакции. Мое предложение Вам - то, что, если нет никакой проблемы производительности, например, когда поставщик услуг находится на LAN (не WAN) или данные, является относительно маленьким, это стоит того для отправления 100 запросов POST к серверу. Сохраните его простым, запуститесь с отдельных запросов и если у Вас есть попытка производительности задач оптимизировать.

43
ответ дан John Bollinger 5 November 2019 в 09:11
поделиться

Ваша идея кажется допустимой мне. Реализация является вопросом Вашего предпочтения. Вы можете использовать JSON или просто параметры для этого ("order_lines []" массив) и делаете

POST /orders

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

8
ответ дан Milan Novota 5 November 2019 в 09:11
поделиться

Вы не захотите отправлять HTTP-заголовки за 100 аккуратностью. Вы ни один не хочет генерировать больше запросы, чем необходимый.

Отправляют целый заказ в одном объекте JSON к серверу, к: сервер/порядок или сервер/порядок/новый. Возвратите что-то, что указывает на: server/order/order_id

Также рассматривает использование <ударяют>, СОЗДАЮТ ПОМЕЩЕННЫЙ вместо POST

0
ответ дан dlamblin 5 November 2019 в 09:11
поделиться

Думаю, лучше отправлять отдельные запросы в пределах одного соединения . Конечно, ваш веб-сервер должен его поддерживать

6
ответ дан 24 November 2019 в 02:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: