@dominion-framework/dominion v0.2.13
Dominion Node.js framework for RESTfull APIs
Declarative Promise based Node.js framework for RESTful API
Installation
npm i @dominion-framework/dominionQuick start
npx dominion create hello
npm startThis 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=+authorModels 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.
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago