![](/style/images/good.png)
77
![](/style/images/bad.png)
GitHub - rapidjs/rapid.js: An ORM-like Interface and a Router For Your API Reque...
source link: https://github.com/rapidjs/rapid.js
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
An ORM-like Interface and a Router For Your API Requests
Create simple, reusable, and cleaner wrappers, define custom routes, and more for your API requests.
Read the official docs at https://rapidjs.io.
Installation
Pick your poison:
yarn add rapid.js
npm i -S rapid.js
npm install --save rapid.js
Overview
Define Simple Models
const post = new Rapid({ modelName: 'Post' });
post.find(1).then((response) => {
// GET => /api/post/1
});
post.collection.findBy('category', 'featured').then((response) => {
// GET => /api/posts/category/featured
});
post.withParams({ limit: 20, order: 'desc' }).all().then((response) => {
// GET => /api/posts?limit=20&order=desc
});
post.update(25, { title: 'Rapid JS Is Awesome!' })
// POST => /api/posts/25/update
post.destroy(9)
// POST => /api/posts/9/destroy
post.restore(9)
// POST => /api/posts/9/restore
Read more about Rapid Basics.
Easily Customize Your API Requests
const post = new Rapid({
modelName: 'Post',
suffixes: {
destroy: '',
update: 'save'
},
methods: {
destroy: 'delete'
},
trailingSlash: true
});
post.update(25, { title: 'Rapid JS Is Awesome!' })
// POST => /api/posts/25/save/
post.destroy(9)
// DELETE => /api/posts/9/
Read more about Customizing Your Requests.
Create Reusable Base Models
class Base extends Rapid {
boot () {
this.baseURL = 'https://myapp.com/api';
this.config.globalParameters = { key: 'MY_API_KEY' }
}
}
const photo = new Base({ modelName: 'Photo' });
const gallery = new Base({ modelName: 'Gallery' });
const tag = new Base({ modelName: 'Tag' });
photo.find(1)
// GET => https://myapp.com/api/photo/1?key=MY_API_KEY
tag.collection.findBy('color', 'red')
// GET => https://myapp.com/api/tags/color/red?key=MY_API_KEY
gallery.id(23).get('tags', 'nature')
// GET => https://myapp.com/api/gallery/23/tag/nature?key=MY_API_KEY
Read more about Base Models.
Write API Wrappers For Your Endpoints
class GalleryWrapper extends Rapid {
boot () {
this.baseURL = 'https://myapp.com/gallery/api';
this.modelName = 'Gallery';
}
tagSearch (query) {
return this.url('tagsearch').withParam('query', query);
}
json () {
return this.url('json');
}
}
const gallery = new GalleryWrapper({
globalParameters: { key: 'MY_API_KEY' }
});
gallery.tagSearch('nature').json().get().then(...);
// GET https://myapp.com/gallery/api/tagsearch/json?query=nature&key=MY_API_KEY
// GET https://myapp.com/gallery/api/tagsearch/json?query=nature&key=MY_API_KEY
Read more about Making a Wrapper.
Define Custom Routes
const customRoutes = [
{
name: 'web_get_user_preferences',
type: 'get',
url: '/user/preferences',
},
{
name: 'web_save_user_preferences',
type: 'post',
url: '/user/{id}/save/preferences'
}
];
const router = new Rapid({ customRoutes, baseURL: '/api' });
router.route('web_get_user_preferences').then((response) => {});
// GET => /api/user/preferences
router.route('web_save_user_preferences', { id: 12 }, /* { request data } */).then((response) => {});
// POST => /api/user/12/save/preferences
Using Your Own HTTP Service
import http from 'some-http-service';
const customRoutes = [
{
name: 'web_login',
url: '/login'
},
{
name: 'api_save_user_preferences',,
url: '/user/{id}/save/preferences'
}
];
const rapid = new Rapid({ customRoutes, baseURL: '' });
rapid.generate('web_login')
// returns '/login'
// use your own service
http.post(rapid.generate('api_save_user_preferences', { id: 1 }), { data }).then()...
Read more about Custom Routes.
Read the official docs at https://rapidjs.io.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK