Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/wxs77577/adonis-rest
Restful api for AdonisJs
https://github.com/wxs77577/adonis-rest
adonis-china adonisjs crud nodejs rest-api restful-api
Last synced: about 2 hours ago
JSON representation
Restful api for AdonisJs
- Host: GitHub
- URL: https://github.com/wxs77577/adonis-rest
- Owner: wxs77577
- Created: 2017-06-12T09:10:37.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2018-11-16T06:36:51.000Z (almost 6 years ago)
- Last Synced: 2024-04-25T11:20:45.374Z (7 months ago)
- Topics: adonis-china, adonisjs, crud, nodejs, rest-api, restful-api
- Language: JavaScript
- Size: 47.9 KB
- Stars: 17
- Watchers: 3
- Forks: 4
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 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 {
}
```