express-reply

1.0.2 • Public • Published

Express reply

express-reply is express middleware that enables you to easily send the correct response type, based on the Accept http header. It also adds extensions for sending replies in express for both xml and yaml.

Installation

npm i express-reply

Quick use

const express = require('express'),
    app = express(),
    expressReply = require('express-reply');
 
 
app.use(expressReply());

Example usage

app.get('/products/:id',function(req,res,next){
    const id = req.param('id');
    db.find({_id:id},function(err,product){
        if(err) return next(err);
        /*
            Send view via res.render(), if accept header is 'text/html' or other derivative mimetype
            else if 'application/xml' or derivative mime type, send xml
            else if 'text/x-yaml' or derivative mime type, send yaml
 
            if no view engine is set up, or extension on the provided view doesn't match one of the view engines
            use or .sendFile();
 
            //Uses res.sendFile(), object parameter will be send file options.
            e.g res.expressReponse('myfile.csv',{});
        */
        else res.expressResponse('products',product);
    });
})

Other utility methods added

    res.xml({
        this:'js object',
        willBeSent:'as Xml'
        name:'Foo',
        age:1
    });
    
    //Specify the root node name when sending xml
    res.xml({hi:1},'RootNodeName');
 
    res.yaml({
        this:'js object',
        willBeSent:'as Xml'
        name:'Foo',
        age:1
    })

Advanced usage

    app.use(expressResponse({
        /*Sets the parent node name when an xml response is set, defaults to Node*/
        xmlRootNode:'ImAtTheTop',
        /*Set the content type sent by yaml, defaults to application/x-yaml;*/
        yamlContentType:'text/x-yaml'
         /*Set the content type sent by yaml, defaults to application/xml;*/
        xmlContentType:'xml',
        /**
         * Register custom response types
         */
        responseTypes:{
            /**
             * req: the current request
             * res: the current response
             * view: the view specified when calling res.expressResponse()
             *       e.g when res.expressResponse('products',product)
             *       the view would be 'products'
             * object: the data specified when calling res.expressResponse()
             *        e.g when res.expressResponse('products',product)
             *        the data would be product
             * */
            'someReponseType':function(req, res, view, object) {
                return res.xml(object);
            }
        }
    }))

Readme

Keywords

none

Package Sidebar

Install

npm i express-reply

Weekly Downloads

6

Version

1.0.2

License

ISC

Unpacked Size

8.01 kB

Total Files

7

Last publish

Collaborators

  • blackjem