1.0.3 • Published 5 years ago

expressjs-gen v1.0.3

Weekly downloads
4
License
MIT
Repository
github
Last release
5 years ago

Node.JS Express Generator

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.

Installation

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

Features

  • Easy to use
  • Faster then writing the code :)
  • Generates a small Node.JS Express aplication
  • File upload
  • ES9 friendly
  • Works in VSCode

Quick Start

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.

Expected Output.

Folder structure

┬ Instalation path
├─┬ .vscode
│ └── launch.json
├── node_modules
│ └── ...
├── index.js
├── package-lock.json
└── package.json

Code

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}.`)
})

Routes

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
    }
]

License

MIT