The purpose of this module is to have ready at all times, out of the box, a basic express js server ready to run for prototyping.
This is a Node.js module available through the npm registry.
Before installing, download and install Node.js. Node.js 8 or higher is required.
Installation is done using the
npm install
command:
$ npm install expressjs-gen --g
- Easy to use
- Faster then writing the code :)
- Generates a small Node.JS Express aplication
- File upload
- ES9 friendly
- Works in VSCode
The quickest way to get started with the generator is to create a folder and call the scripr from there.
$ cd Desktop/ && mkdir expressapp
$ cd expressapp
Create the app:
$ expressjs-gen
Follow the steps.
┬ Instalation path
├─┬ .vscode
│ └── launch.json
├── node_modules
│ └── ...
├── index.js
├── package-lock.json
└── package.json
const bodyParser = require('body-parser')
const app = require('express')()
const multer = require('multer')
const upload = multer({ dest: './uploads' })
const fs = require('fs')
const port = 3000
const METAS_PATH = './filemetas'
app.use(bodyParser.json({ type: 'application/json' }))
app.post('/', (req, res) => {
res.json(req.body)
})
app.get('/', (req, res) => {
res.json({ hello: 'world' })
})
app.put('/', upload.single('file'), (req, res) => {
if (!fs.existsSync(METAS_PATH))
fs.mkdirSync(METAS_PATH)
fs.writeFileSync(`${METAS_PATH}/${req.file.filename}.json`, JSON.stringify(req.file, null, 2))
res.send(req.file)
})
app.get('/filemetas', (req, res) => {
try {
res.json(fs.readdirSync(METAS_PATH).reduce((acc, f) => { acc.push(JSON.parse(fs.readFileSync(`${METAS_PATH}/${f}`))); return acc }, []))
} catch (error) {
res.send({ desc: 'Cannot read files', error })
}
})
app.listen(port, () => {
console.log(`API listening on ${port}.`)
})
URL: /
Method: GET
Response:
{ "hello": "world" }
Responds with the request's body.
URL: /
Method: POST
Request:
{ "hello": "expressjs-gen" }
Response:
{ "hello": "expressjs-gen" }
Upload file with a multipart/form-data
type request.
URL: /
Method: PUT
Field Name: file
Response:
{
"fieldname": "file",
"originalname": "file.txt",
"encoding": "7bit",
"mimetype": "text/plain",
"destination": "./uploads",
"filename": "4d5ea5b9d255848fb9f0db61d719ebc4",
"path": "uploads/4d5ea5b9d255848fb9f0db61d719ebc4",
"size": 3157
}
Get metadata pertaining to uploaded file(s).
URL: /filemetas
Method: GET
Response:
[
{
"fieldname": "file",
"originalname": "file.txt",
"encoding": "7bit",
"mimetype": "text/plain",
"destination": "./uploads",
"filename": "4d5ea5b9d255848fb9f0db61d719ebc4",
"path": "uploads/4d5ea5b9d255848fb9f0db61d719ebc4",
"size": 3157
}
]