Forest Admin's default routes are generated in the routes
folder at installation.
Below we've detailed what the next()
statement does. Those snippets can be used when overriding those routes, as explained here.
/routes/companies.js...const {PermissionMiddlewareCreator,RecordCreator,} = require('forest-express-sequelize');const { companies } = require('../models');const permissionMiddlewareCreator = new PermissionMiddlewareCreator('companies');...// Create a Company - Check out our documentation for more details: https://docs.forestadmin.com/documentation/v/v6/reference-guide/routes/default-routes#create-a-recordrouter.post('/companies', permissionMiddlewareCreator.create(), (request, response, next) => {const recordCreator = new RecordCreator(companies);recordCreator.deserialize(request.body).then(recordToCreate => recordCreator.create(recordToCreate)).then(record => recordCreator.serialize(record)).then(recordSerialized => response.send(recordSerialized)).catch(next);});...
/routes/companies.js...const {PermissionMiddlewareCreator,RecordUpdater,} = require('forest-express-sequelize');const { companies } = require('../models');const permissionMiddlewareCreator = new PermissionMiddlewareCreator('companies');...// Update a Company - Check out our documentation for more details: https://docs.forestadmin.com/documentation/v/v6/reference-guide/routes/default-routes#update-a-recordrouter.put('/companies/:recordId', permissionMiddlewareCreator.update(), (request, response, next) => {const recordUpdater = new RecordUpdater(companies);recordUpdater.deserialize(request.body).then(recordToUpdate => recordUpdater.update(recordToUpdate, request.params.recordId)).then(record => recordUpdater.serialize(record)).then(recordSerialized => response.send(recordSerialized)).catch(next);});...
Note that the update of belongsTo
fields is managed by another route.
/routes/companies.js...const {PermissionMiddlewareCreator,RecordRemover,} = require('forest-express-sequelize');const { companies } = require('../models');const permissionMiddlewareCreator = new PermissionMiddlewareCreator('companies');...// Delete a Company - Check out our documentation for more details: https://docs.forestadmin.com/documentation/v/v6/reference-guide/routes/default-routes#delete-a-recordrouter.delete('/companies/:recordId', permissionMiddlewareCreator.delete(), (request, response, next) => {const recordRemover = new RecordRemover(companies);recordRemover.remove(request.params.recordId).then(() => response.status(204).send()).catch(next);});...
/routes/companies.js...const {PermissionMiddlewareCreator,RecordsGetter,} = require('forest-express-sequelize');const { companies } = require('../models');const permissionMiddlewareCreator = new PermissionMiddlewareCreator('companies');...// Get a list of Companies - Check out our documentation for more details: https://docs.forestadmin.com/documentation/v/v6/reference-guide/routes/default-routes#get-a-list-of-recordsrouter.get('/companies', permissionMiddlewareCreator.list(), (request, response, next) => {const recordsGetter = new RecordsGetter(companies);recordsGetter.getAll(request.query).then(records => recordsGetter.serialize(records)).then(recordsSerialized => response.send(recordsSerialized)).catch(next);});...
/routes/companies.js...const {PermissionMiddlewareCreator,RecordsCounter,} = require('forest-express-sequelize');const { companies } = require('../models');const permissionMiddlewareCreator = new PermissionMiddlewareCreator('companies');...// Get a number of Companies - Check out our documentation for more details: https://docs.forestadmin.com/documentation/v/v6/reference-guide/routes/default-routes#get-a-number-of-recordsrouter.get('/companies/count', permissionMiddlewareCreator.list(), (request, response, next) => {const recordsCounter = new RecordsCounter(companies);recordsCounter.count(request.query).then(count => response.send({ count })).catch(next);});...
/routes/companies.js...const {PermissionMiddlewareCreator,RecordGetter,} = require('forest-express-sequelize');const { companies } = require('../models');const permissionMiddlewareCreator = new PermissionMiddlewareCreator('companies');...// Get a Company - Check out our documentation for more details: https://docs.forestadmin.com/documentation/v/v6/reference-guide/routes/default-routes#get-a-recordrouter.get('/companies/:recordId', permissionMiddlewareCreator.details(), (request, response, next) => {const recordGetter = new RecordGetter(companies);recordGetter.get(request.params.recordId).then(record => recordGetter.serialize(record)).then(recordSerialized => response.send(recordSerialized)).catch(next);});
/routes/companies.js...const {PermissionMiddlewareCreator,RecordsExporter,} = require('forest-express-sequelize');const { companies } = require('../models');const permissionMiddlewareCreator = new PermissionMiddlewareCreator('companies');...// Export a list of Companies - Check out our documentation for more details: https://docs.forestadmin.com/documentation/v/v6/reference-guide/routes/default-routes#export-a-list-of-recordsrouter.get('/companies.csv', permissionMiddlewareCreator.export(), (request, response, next) => {const recordsExporter = new RecordsExporter(companies);recordsExporter.streamExport(response, request.query).catch(next);});
/routes/companies.js...const {PermissionMiddlewareCreator,RecordsRemover,} = require('forest-express-sequelize');const { companies } = require('../models');const permissionMiddlewareCreator = new PermissionMiddlewareCreator('companies');...// Delete a list of Companies - Check out our documentation for more details: https://docs.forestadmin.com/documentation/v/v6/reference-guide/routes/default-routes#delete-a-recordrouter.delete('/companies', permissionMiddlewareCreator.delete(), (request, response, next) => {new RecordsGetter(companies).getIdsFromRequest(request).then((ids) => {const recordsRemover = new RecordsRemover(companies);recordsRemover.remove(ids).then(() => response.status(204).send()).catch(next);}).catch(next);});
Some other routes exist but are not generated automatically because it's less likely that you'll need to extend or override them.
Here is the list:
GET /forest/{modelName}/{id}/relationships/{hasManyRelationName} ⟶ List has many relationships
GET /forest/{modelName}/{id}/relationships/{hasManyRelationName}/count ⟶ Count has many relationships
PUT /forest/{modelName}/{id}/relationships/{belongsToRelationName} ⟶ Update a belongs to field
POST /forest/{modelName}/{id}/relationships/{hasManyRelationName} ⟶ Add existing records to has many relationship
GET /forest/{modelName}/{id}/relationships/{hasManyRelationName}.csv ⟶ Download and export of an has many relationships
PUT /forest/{modelName}/{id}/relationships/{embeddedRelationName}/{index} ⟶ Update an embedded document (inside a list)
DELETE /forest/{modelName}/{id}/relationships/{hasManyRelationName} ⟶ Dissociate records from relations
POST /forest/actions/{actionNameDasherized}/values ⟶ Get the default values for this action