catapult_edm
v1.0.6
Published
Express JS addon for writing Web APIs
Downloads
13
Maintainers
Readme
catapult
Catapult is a Web API abstraction tool. The aim of this package is to simplify adding data endpoints to a NodeJS application/server. The generated API endpoints follow RFC 7231. Here is a quick guide of how this works :
For the following example to work, you must have MongoDB running.
Import package
var catapult = require("catapult_edm")
Setup Components
Initialize the RouteMapper and pass the Mongoose Connector provided with the package :
var RouteMapper = new catapult.RouteMapper(
catapult.MongooseConnector
)
Now add a few Mongoose models to access through REST API
const mongoose = require('mongoose');
mongoose.connect(
'mongodb://localhost:27017/test', {
useNewUrlParser: true,
useUnifiedTopology: true
}
);
var Pet = {
name: String
}
// resource name will be `cats`
const Cat = mongoose.model('Cat', Pet );
const Dog = mongoose.model('Dog', Pet );
models = {
Cat,
Dog
}
Generate API
Add the models to the route mapper.
RouteMapper.add(models.Cat, models.Dog)
var router = RouteMapper.getRouter()
Mount a path for your new endpoints
app.use("/",router)
Web Interface
Once the route mapper is configured and linked to your express server, you can access your data with the following request combinations. Keep in mind that <model name>
is the API resource name your data connector returns. The table below will assume that your router is mounted at server root. In Mongoose land, <object id>
is the string representation of field _id
within your MongoDB object.
|Request Verb | Registered Express Path | Request Body| Result |
|--|--| --| --|
| POST | /<model name>
| JSON string of object to add. { "name" : "Fluffo" }
with the models defined above in mind | Newly created object. As a json string. Submit an Array to bulk insert items. ie : [{ "name" : "Fluffo"}]
|
| GET | /<model name>?query=val
| N/A | A list of objects. Query parameters are optional, but can be used to filter results based on a passed string value.
| PUT | /<model name>/<object id>
| JSON string with object updates | JSON object with success message.
| GET | /<model name>/<object id>
| N/A | JSON object with the ID of the requested object. null
is returned if the object is not found.
| GET | /<model name>/find?query=val
| N/A | Find an individual record based on query supplied.
| DELETE | /<model name>/<object id>
| N/A | JSON object with success message, otherwise null
Sample commands with curl:
Get all cats :
curl -XGET 'http://localhost:3000/cats'
Add a new cat record :
curl -XPOST -H "Content-type: application/json" -d '{ "name" : "Fluffo" }' 'http://localhost:3000/cats'
Update a cat record :
curl -XPUT -H "Content-type: application/json" -d '{ "name" : "Fluff" }' 'http://localhost:3000/cats/608d41ca30f954cbf1d11170'