1.1.0 • Published 3 years ago

rest-bundle v1.1.0

Weekly downloads
47
License
MIT
Repository
github
Last release
3 years ago

RestBundle

Simplify REST API creation and maintentance with re-usable REST bundles. Encapsulate related REST services in a single JavaScript class that extends RestBundle.

Example: Define a REST bundle comprising a single resource (i.e., /greeting/hello) with handlers for GET and POST:

class HelloRest extends RestBundle {
    constructor(name="greeting",options = {}) {
        super(name, options);
        var handlers = [
            this.resourceMethod("get", "hello", this.getHello, "text/html"),
            this.resourceMethod("post", "hello", this.onDie),
        ];
        Object.defineProperty(this, "handlers", {
            value: handlers,
        });
    }

    getHello(req, res) { return "hello"; }

    postHello(req, res) { throw new Error("goodbye"); }
}

Add HelloRest to a nodejs application:

const HelloRest = require("../test/hello-rest");
var helloRest = new HelloRest("greeting");
helloRest.bindExpress(app);

Launch web server:

npm start

A RestBundle can be shared for use by others as an npm package.

Vue 2

RestBundle relies on Vue.js for modular web components.

  1. npm run dev
  2. http://localhost:4000/greeting/ui

State Model

RestBundle uses Vuex as its application store. The RestBundle state hierarchy comprises one or more services having one or more API's, each of which has its own apiModel:

state.restBundle.service.apiName.apiModel

Vue components that serve as the primary view of a RestBundle api must define a 'service' property and include the rb-api-mixin.

    mixins: [ 
        require("./mixins/rb-about-mixin.js"),
        require("./mixins/rb-api-mixin.js").createMixin("web-socket"),
    ],
    props: {
        service: "RbServer",
    },
    beforeMount(): {
        this.apiLoad().then(apiModel=>...).catch(e=>...);
    },

Other RestBundle Vue components can become informed of the loading of another apiModel using the promise returned by onApiModelLoaded(apiName,service):

    mixins: [ 
        require("./mixins/rb-about-mixin.js"),
        require("./mixins/rb-api-mixin.js").createMixin("some-other-api"),
    ],
    props: {
        service: "RbServer",
    },
    beforeMount(): {
        this.onApiModelLoaded("web-socket", "RbServer").then(apiModel=>...).catch(e=>...);
    },
1.1.0

3 years ago

1.0.0

3 years ago

0.40.21

4 years ago

0.40.20

4 years ago

0.40.19

5 years ago

0.40.18

5 years ago

0.40.16

5 years ago

0.40.14

5 years ago

0.40.13

5 years ago

0.40.12

5 years ago

0.40.8

6 years ago

0.40.7

6 years ago

0.40.6

6 years ago

0.40.5

6 years ago

0.40.4

6 years ago

0.40.3

6 years ago

0.40.2

6 years ago

0.40.0

6 years ago

0.39.4

6 years ago

0.39.2

6 years ago

0.39.1

6 years ago

0.39.0

6 years ago

0.38.3

6 years ago

0.38.2

6 years ago

0.38.1

6 years ago

0.38.0

6 years ago

0.37.5

6 years ago

0.37.4

6 years ago

0.37.3

7 years ago

0.37.2

7 years ago

0.37.1

7 years ago

0.37.0

7 years ago

0.36.4

7 years ago

0.36.3

7 years ago

0.36.2

7 years ago

0.36.1

7 years ago

0.36.0

7 years ago

0.35.6

7 years ago

0.35.5

7 years ago

0.35.4

7 years ago

0.35.2

7 years ago

0.35.1

7 years ago

0.35.0

7 years ago

0.34.3

7 years ago

0.34.2

7 years ago

0.34.1

7 years ago

0.34.0

7 years ago

0.33.13

7 years ago

0.33.12

7 years ago

0.33.11

7 years ago

0.33.9

7 years ago

0.33.8

7 years ago

0.33.7

7 years ago

0.33.6

7 years ago

0.33.5

7 years ago

0.33.4

7 years ago

0.33.3

7 years ago

0.33.2

7 years ago

0.33.1

7 years ago

0.33.0

7 years ago

0.32.0

7 years ago

0.31.6

7 years ago

0.31.5

7 years ago

0.31.4

7 years ago

0.31.3

7 years ago

0.31.1

7 years ago

0.31.0

7 years ago

0.30.2

7 years ago

0.30.0

7 years ago

0.29.6

7 years ago

0.29.5

7 years ago

0.29.4

7 years ago

0.29.3

7 years ago

0.29.2

7 years ago

0.29.0

7 years ago

0.28.0

7 years ago

0.27.0

7 years ago

0.26.7

7 years ago

0.26.5

7 years ago

0.26.4

7 years ago

0.26.3

7 years ago

0.26.2

7 years ago

0.26.1

7 years ago

0.25.7

7 years ago

0.25.6

7 years ago

0.25.5

7 years ago

0.25.3

7 years ago

0.25.1

7 years ago

0.25.0

7 years ago

0.24.1

7 years ago

0.24.0

7 years ago

0.23.2

7 years ago

0.23.1

7 years ago

0.23.0

7 years ago

0.22.3

8 years ago

0.22.2

8 years ago

0.22.1

8 years ago

0.22.0

8 years ago

0.21.16

8 years ago

0.21.15

8 years ago

0.21.14

8 years ago

0.21.13

8 years ago

0.21.12

8 years ago

0.21.11

8 years ago

0.21.10

8 years ago

0.21.8

8 years ago

0.21.7

8 years ago

0.21.6

8 years ago

0.21.5

8 years ago

0.21.4

8 years ago

0.21.3

8 years ago

0.21.2

8 years ago

0.21.1

8 years ago

0.21.0

8 years ago

0.20.7

8 years ago

0.20.6

8 years ago

0.20.5

8 years ago

0.20.4

8 years ago

0.20.3

8 years ago

0.20.2

8 years ago

0.20.1

8 years ago

0.20.0

8 years ago

0.19.7

8 years ago

0.19.6

8 years ago

0.19.5

8 years ago

0.19.4

8 years ago

0.19.3

8 years ago

0.19.2

8 years ago

0.19.1

8 years ago

0.19.0

8 years ago

0.18.0

8 years ago

0.17.5

8 years ago

0.17.4

8 years ago

0.17.3

8 years ago

0.17.2

8 years ago

0.17.1

8 years ago

0.17.0

8 years ago

0.16.7

8 years ago

0.16.6

8 years ago

0.16.5

8 years ago

0.16.4

8 years ago

0.16.3

8 years ago

0.16.2

8 years ago

0.16.1

8 years ago

0.16.0

8 years ago

0.15.14

8 years ago

0.15.13

8 years ago

0.15.12

8 years ago

0.15.11

8 years ago

0.15.10

8 years ago

0.15.8

8 years ago

0.15.7

8 years ago

0.15.6

8 years ago

0.15.5

8 years ago

0.15.4

8 years ago

0.15.3

8 years ago

0.15.2

8 years ago

0.15.1

8 years ago

0.15.0

8 years ago

0.13.11

8 years ago

0.13.10

8 years ago

0.13.9

8 years ago

0.13.8

8 years ago

0.13.6

8 years ago

0.13.5

8 years ago

0.13.4

8 years ago

0.13.3

8 years ago

0.13.2

8 years ago

0.13.1

8 years ago

0.13.0

8 years ago

0.12.2

8 years ago

0.12.1

8 years ago

0.12.0

8 years ago

0.11.56

8 years ago

0.11.55

8 years ago

0.11.54

8 years ago

0.11.53

8 years ago

0.11.51

8 years ago

0.11.50

8 years ago

0.11.49

8 years ago

0.11.48

8 years ago

0.11.47

8 years ago

0.11.46

8 years ago

0.11.45

8 years ago

0.11.44

8 years ago

0.11.43

8 years ago

0.11.42

8 years ago

0.11.41

8 years ago

0.11.40

8 years ago

0.11.39

8 years ago

0.11.38

8 years ago

0.11.35

8 years ago

0.11.34

8 years ago

0.11.33

8 years ago

0.11.31

8 years ago

0.11.30

8 years ago

0.11.29

8 years ago

0.11.28

8 years ago

0.11.27

8 years ago

0.11.26

8 years ago

0.11.24

8 years ago

0.11.23

8 years ago

0.11.22

8 years ago

0.11.21

8 years ago

0.11.20

8 years ago

0.11.19

8 years ago

0.11.18

8 years ago

0.11.17

8 years ago

0.11.16

8 years ago

0.11.15

8 years ago

0.11.14

8 years ago

0.11.13

8 years ago

0.11.12

8 years ago

0.11.11

8 years ago

0.11.10

8 years ago

0.11.9

8 years ago

0.11.8

8 years ago

0.11.7

8 years ago

0.11.5

8 years ago

0.11.4

8 years ago

0.11.2

8 years ago

0.11.1

8 years ago

0.11.0

8 years ago

0.10.1

8 years ago

0.9.23

8 years ago

0.9.22

8 years ago

0.9.21

8 years ago

0.9.20

8 years ago

0.9.18

8 years ago

0.9.17

8 years ago

0.9.16

8 years ago

0.9.15

8 years ago

0.9.14

8 years ago

0.9.13

8 years ago

0.9.12

8 years ago

0.9.11

8 years ago

0.9.10

8 years ago

0.9.9

8 years ago

0.9.8

8 years ago

0.9.7

8 years ago

0.9.6

8 years ago

0.9.5

8 years ago

0.9.3

8 years ago

0.9.2

8 years ago

0.9.1

8 years ago

0.9.0

8 years ago

0.8.1

8 years ago

0.8.0

8 years ago

0.7.0

8 years ago

0.6.0

8 years ago

0.5.4

8 years ago

0.5.3

8 years ago

0.5.2

8 years ago

0.5.1

8 years ago

0.5.0

8 years ago

0.4.1

8 years ago

0.4.0

8 years ago

0.3.0

8 years ago

0.2.2

8 years ago

0.2.1

8 years ago

0.2.0

8 years ago

0.1.0

8 years ago