@dominion-framework/dominion

0.2.36 • Public • Published

Dominion Node.js framework for RESTfull APIs

Dominion Node.js framework for RESTfull APIs

Gitter install size

Declarative Promise based Node.js framework for RESTful API

Installation

npm i @dominion-framework/dominion

Quick start

npx dominion create hello
npm start

This will run Node.js server with demo API's. Open http://localhost:7042/hello to check results and examine generated files in folder components/hello to see how it works.

Documentation

Read full documentation on dominion.js.org.

Features highlight

Clear Endpoints Declaration

module.exports = {

    factory: BooksFactory,

    GET: [
        // books?genre=western
        function (genre = null) {
            return BooksFactory.find({genre});
        }
    ],

    POST: [
        // books/
        function () {
            return BooksFactory.new(this.request.body)
                .then(book => book.save());
        }
    ]
}

Automatic RESTful URLs

// Endpoint URLs is build based on function arguments:

function (limit = 10, offset = 0) { }
// https://api.example.com/books?limit=42&offset=21


function (libraryShelvesId, favoriteBooksId, orderBy = "") { }
// https://api.example.com/library-shelves/42/favorite-books/84?orderBy=+author

Models Schema Validation

{
    name: "Book",
    
    properties: {
        id: Property.id(),
        name: Property.string().min(1).required(),
        isbn: Property.string().pattern(/^\d-\d{3}-\d{5}-\d$/).example("0-330-25864-8"),
        authorId: Property.model("Author"),
        genre: Property.set(["Fantasy", "Science fiction", "Western", "Romance"]),
        creationTime: Property.date().private(),
        modificationTime: Property.date().private()
    }
    ...
}

Annotations

function(isbn) {
    // @path: books/isbn/(\d{1,5}[- ]\d{1,7}[- ]\d{1,6}[- ](?:\d|X))
    // @model: Books    
    // @summary: Get book by ISBN number
    
    return BooksFactory.get({isbn})
}

OpenAPI (Swagger) documentation

Automatic OpenAPI documentation based on source code.

Zero Dependencies

100Kb footprint Node.js framework with no npm dependencies. If you also think, that you don't need npm to left-pad a string.

Dependencies (0)

    Dev Dependencies (0)

      Package Sidebar

      Install

      npm i @dominion-framework/dominion

      Weekly Downloads

      44

      Version

      0.2.36

      License

      MIT

      Unpacked Size

      95.7 kB

      Total Files

      51

      Last publish

      Collaborators

      • ychaikovsky