1.1.0 • Published 2 years ago

rest-bundle v1.1.0

Weekly downloads
47
License
MIT
Repository
github
Last release
2 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

2 years ago

1.0.0

2 years ago

0.40.21

3 years ago

0.40.20

3 years ago

0.40.19

3 years ago

0.40.18

4 years ago

0.40.16

4 years ago

0.40.14

4 years ago

0.40.13

4 years ago

0.40.12

4 years ago

0.40.8

4 years ago

0.40.7

5 years ago

0.40.6

5 years ago

0.40.5

5 years ago

0.40.4

5 years ago

0.40.3

5 years ago

0.40.2

5 years ago

0.40.0

5 years ago

0.39.4

5 years ago

0.39.2

5 years ago

0.39.1

5 years ago

0.39.0

5 years ago

0.38.3

5 years ago

0.38.2

5 years ago

0.38.1

5 years ago

0.38.0

5 years ago

0.37.5

5 years ago

0.37.4

5 years ago

0.37.3

5 years ago

0.37.2

6 years ago

0.37.1

6 years ago

0.37.0

6 years ago

0.36.4

6 years ago

0.36.3

6 years ago

0.36.2

6 years ago

0.36.1

6 years ago

0.36.0

6 years ago

0.35.6

6 years ago

0.35.5

6 years ago

0.35.4

6 years ago

0.35.2

6 years ago

0.35.1

6 years ago

0.35.0

6 years ago

0.34.3

6 years ago

0.34.2

6 years ago

0.34.1

6 years ago

0.34.0

6 years ago

0.33.13

6 years ago

0.33.12

6 years ago

0.33.11

6 years ago

0.33.9

6 years ago

0.33.8

6 years ago

0.33.7

6 years ago

0.33.6

6 years ago

0.33.5

6 years ago

0.33.4

6 years ago

0.33.3

6 years ago

0.33.2

6 years ago

0.33.1

6 years ago

0.33.0

6 years ago

0.32.0

6 years ago

0.31.6

6 years ago

0.31.5

6 years ago

0.31.4

6 years ago

0.31.3

6 years ago

0.31.1

6 years ago

0.31.0

6 years ago

0.30.2

6 years ago

0.30.0

6 years ago

0.29.6

6 years ago

0.29.5

6 years ago

0.29.4

6 years ago

0.29.3

6 years ago

0.29.2

6 years ago

0.29.0

6 years ago

0.28.0

6 years ago

0.27.0

6 years ago

0.26.7

6 years ago

0.26.5

6 years ago

0.26.4

6 years ago

0.26.3

6 years ago

0.26.2

6 years ago

0.26.1

6 years ago

0.25.7

6 years ago

0.25.6

6 years ago

0.25.5

6 years ago

0.25.3

6 years ago

0.25.1

6 years ago

0.25.0

6 years ago

0.24.1

6 years ago

0.24.0

6 years ago

0.23.2

6 years ago

0.23.1

6 years ago

0.23.0

6 years ago

0.22.3

6 years ago

0.22.2

6 years ago

0.22.1

6 years ago

0.22.0

7 years ago

0.21.16

7 years ago

0.21.15

7 years ago

0.21.14

7 years ago

0.21.13

7 years ago

0.21.12

7 years ago

0.21.11

7 years ago

0.21.10

7 years ago

0.21.8

7 years ago

0.21.7

7 years ago

0.21.6

7 years ago

0.21.5

7 years ago

0.21.4

7 years ago

0.21.3

7 years ago

0.21.2

7 years ago

0.21.1

7 years ago

0.21.0

7 years ago

0.20.7

7 years ago

0.20.6

7 years ago

0.20.5

7 years ago

0.20.4

7 years ago

0.20.3

7 years ago

0.20.2

7 years ago

0.20.1

7 years ago

0.20.0

7 years ago

0.19.7

7 years ago

0.19.6

7 years ago

0.19.5

7 years ago

0.19.4

7 years ago

0.19.3

7 years ago

0.19.2

7 years ago

0.19.1

7 years ago

0.19.0

7 years ago

0.18.0

7 years ago

0.17.5

7 years ago

0.17.4

7 years ago

0.17.3

7 years ago

0.17.2

7 years ago

0.17.1

7 years ago

0.17.0

7 years ago

0.16.7

7 years ago

0.16.6

7 years ago

0.16.5

7 years ago

0.16.4

7 years ago

0.16.3

7 years ago

0.16.2

7 years ago

0.16.1

7 years ago

0.16.0

7 years ago

0.15.14

7 years ago

0.15.13

7 years ago

0.15.12

7 years ago

0.15.11

7 years ago

0.15.10

7 years ago

0.15.8

7 years ago

0.15.7

7 years ago

0.15.6

7 years ago

0.15.5

7 years ago

0.15.4

7 years ago

0.15.3

7 years ago

0.15.2

7 years ago

0.15.1

7 years ago

0.15.0

7 years ago

0.13.11

7 years ago

0.13.10

7 years ago

0.13.9

7 years ago

0.13.8

7 years ago

0.13.6

7 years ago

0.13.5

7 years ago

0.13.4

7 years ago

0.13.3

7 years ago

0.13.2

7 years ago

0.13.1

7 years ago

0.13.0

7 years ago

0.12.2

7 years ago

0.12.1

7 years ago

0.12.0

7 years ago

0.11.56

7 years ago

0.11.55

7 years ago

0.11.54

7 years ago

0.11.53

7 years ago

0.11.51

7 years ago

0.11.50

7 years ago

0.11.49

7 years ago

0.11.48

7 years ago

0.11.47

7 years ago

0.11.46

7 years ago

0.11.45

7 years ago

0.11.44

7 years ago

0.11.43

7 years ago

0.11.42

7 years ago

0.11.41

7 years ago

0.11.40

7 years ago

0.11.39

7 years ago

0.11.38

7 years ago

0.11.35

7 years ago

0.11.34

7 years ago

0.11.33

7 years ago

0.11.31

7 years ago

0.11.30

7 years ago

0.11.29

7 years ago

0.11.28

7 years ago

0.11.27

7 years ago

0.11.26

7 years ago

0.11.24

7 years ago

0.11.23

7 years ago

0.11.22

7 years ago

0.11.21

7 years ago

0.11.20

7 years ago

0.11.19

7 years ago

0.11.18

7 years ago

0.11.17

7 years ago

0.11.16

7 years ago

0.11.15

7 years ago

0.11.14

7 years ago

0.11.13

7 years ago

0.11.12

7 years ago

0.11.11

7 years ago

0.11.10

7 years ago

0.11.9

7 years ago

0.11.8

7 years ago

0.11.7

7 years ago

0.11.5

7 years ago

0.11.4

7 years ago

0.11.2

7 years ago

0.11.1

7 years ago

0.11.0

7 years ago

0.10.1

7 years ago

0.9.23

7 years ago

0.9.22

7 years ago

0.9.21

7 years ago

0.9.20

7 years ago

0.9.18

7 years ago

0.9.17

7 years ago

0.9.16

7 years ago

0.9.15

7 years ago

0.9.14

7 years ago

0.9.13

7 years ago

0.9.12

7 years ago

0.9.11

7 years ago

0.9.10

7 years ago

0.9.9

7 years ago

0.9.8

7 years ago

0.9.7

7 years ago

0.9.6

7 years ago

0.9.5

7 years ago

0.9.3

7 years ago

0.9.2

7 years ago

0.9.1

7 years ago

0.9.0

7 years ago

0.8.1

7 years ago

0.8.0

7 years ago

0.7.0

7 years ago

0.6.0

7 years ago

0.5.4

7 years ago

0.5.3

7 years ago

0.5.2

7 years ago

0.5.1

7 years ago

0.5.0

7 years ago

0.4.1

7 years ago

0.4.0

7 years ago

0.3.0

7 years ago

0.2.2

7 years ago

0.2.1

7 years ago

0.2.0

7 years ago

0.1.0

7 years ago