Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/chazzu/activerest
https://github.com/chazzu/activerest
Last synced: 12 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/chazzu/activerest
- Owner: chazzu
- License: mit
- Created: 2016-06-09T23:27:47.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2019-03-28T18:55:33.000Z (almost 6 years ago)
- Last Synced: 2024-12-13T19:45:50.708Z (about 1 month ago)
- Language: JavaScript
- Size: 27.3 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# activerest
## Usage
```
var models = activerest(urlOrConfig, definitions);
```The first parameter could be just a base URL, or a configuration object detailed below.
### Configuration
```
var API = require('activerest');var models = new api({
url: urlString, // Default base URL to useheaders: null, // Could be an object containing header: value fields OR a function which returns an object
// The function will be called each time a REST request is made, good for complex
// authentication methods. It will be called with the path and any post data.getMethod: 'GET', // Override the method used when getting an object
newMethod: 'PUT', // Override the method used when creating an object
findMethod: 'GET', // Override the method used when finding an object
updateMethod: 'PUT', // Override the method used when updating an objecttransform: null, // Would be a function of form function(req); is passed in the entire request to transform
// as necessary for complex requests. You can resolve using the callback parameter passed
// in, or you can resolve by returning a promise.statics: { // A key-value object which defines static objects that should be added to the model
count: function() { // An example of a function that will be added, such that Model.count calls this function
}
}}, definitions);
```### Model Definition
The model definitions could be an array, like this:
var models = activerest(config, ['picture', 'note']);
This will give you models.picture and models.note, which will use all the default values. Requests will be:
```
models.picture.find((err, pictures) => {}); // GET /pictures
models.picture.get(1).then(picture => {}); // GET /pictures/1
var newpic = new models.picture();newpic.save(); // POST /pictures
```As in above examples, functions can accept a callback (which will receive (err, result)) but will also return a promise with the results.
Model names are automatically pluralized into paths, using the [Pluralize](https://www.npmjs.com/package/pluralize) module.
```
picture: /pictures
puppy: /puppies
person: /people
```However, things are customizable.
```
var models = activerest(config, [{
name: 'picture', // Name of the returned model
path: '/picture', // Customize the path that the model will use
idProperty: 'picture_id', // Customize the property used for the ID when updating.
getMethod: 'GET', // Override the method used when getting an object
newMethod: 'PUT', // Override the method used when creating an object
findMethod: 'QUERY', // Override the method used when finding an object
updateMethod: 'PATCH', // Override the method used when updating an object
headers: null, // Custom function or object to set the headers, overrides the default from config
transform: null // As above, this is the last function to be passed the request for transformation
}, {
name: 'person',
url: 'http://domain.com/people' // Specify a completely different URL just for this
}]);
```