AdonisJs Restful API
Not ready for production Currently support AdonisJs v4+MongoDB only. Also check REST-ADMIN - An awesome admin dashboard based on vue 2 and bootstrap v4
Setup
also you can use
npm
by ommit--yarn
-
Install required packages
adonis install @adonisjs/validator --yarnadonis install @adonisjs/antl --yarnadonis install @adonisjs/drive --yarnadonis install lucid-mongo --yarn# install adonis-restadonis install adonis-rest --yarn -
Edit
/start/app.js
const providers ='@adonisjs/validator/providers/ValidatorProvider''@adonisjs/antl/providers/AntlProvider''@adonisjs/drive/providers/DriveProvider''lucid-mongo/providers/LucidMongoProvider''adonis-rest/providers/RestProvider' -
Edit
/start/routes.js
`Route.rest('/rest/api', 'api')` -
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
moduleexports = //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
/** * @param String base url * @param string key of route module in `/config/rest.js` **/RouteRoute
Now, You can check the followed links: (if your port of server is 3333
)
Base Model
There is a more powerful base model Rest/Models/Model
You can define a Product
model like this:
const Model = moduleexports =