UNPKG

adonis-rest

Version:

An Restful api addon for AdonisJs 4 + MongoDB

131 lines (100 loc) 3.07 kB
# AdonisJs Restful API > **Not ready for production** Currently support [AdonisJs v4](https://adonisjs.com/)+[MongoDB](https://github.com/duyluonglc/lucid-mongo) only. Also check [REST-ADMIN](https://github.com/wxs77577/rest-admin) - An awesome admin dashboard based on vue 2 and bootstrap v4 ## Setup > also you can use `npm` by ommit `--yarn` 1. Install required packages ```bash adonis install @adonisjs/validator --yarn adonis install @adonisjs/antl --yarn adonis install @adonisjs/drive --yarn adonis install lucid-mongo --yarn # install adonis-rest adonis install adonis-rest --yarn ``` 1. Edit `/start/app.js` ```js const providers = [ '@adonisjs/validator/providers/ValidatorProvider', '@adonisjs/antl/providers/AntlProvider', '@adonisjs/drive/providers/DriveProvider', 'lucid-mongo/providers/LucidMongoProvider', 'adonis-rest/providers/RestProvider', ] ``` 1. Edit `/start/routes.js` ```js `Route.rest('/rest/api', 'api')` ``` 1. Open `http://localhost:3333/rest/api/users` (or another port) should return paginated user list. ## Documentation ### Config The config file of `adonis-rest` is `/config/rest.js`,you can define any number of **modules** of adonis-rest routes. e.g. For **frontend api** and **backend api**, we call them `api` and `admin` ```js module.exports = { //route module name api: { //authenticator name auth: 'jwt', // which means there are only `index` and `show` routes isAdmin: false, //all of your resources config resources: { // for `/products` products: { // must access with a valid token auth: true, // all of your default query config for `/products` query: { // when list all products index: { // fetch appends, please refer to **Appends** append: ['is_buy'], // fetch related data with: ['categories'], // also you can define default sorting sort: { _id: -1 }, }, // when show a product show: { append: ['is_buy'], } } }, } }, admin: { //maybe `adminJwt` auth: 'jwt', //allow C(create)/U(update)D/(delete) routes isAdmin: true, //allow destroy all routes allowDestroyAll: true, resources: { // ... } } } ``` And then, you can add routes easily: `/start/routes.js` ```js /** * @param String base url * @param string key of route module in `/config/rest.js` **/ Route.rest('/rest/api', 'api') Route.rest('/rest/admin', 'admin') ``` Now, You can check the followed links: (if your port of server is `3333`) - http://localhost:3333/rest/api/product - http://localhost:3333/rest/admin/products ### Base Model There is a more powerful base model `Rest/Models/Model` You can define a `Product` model like this: ```js const Model = use('Rest/Models/Model') module.exports = class Product extends Model { } ```