express-reply
send the best http response determined by http accept header.
Last updated 2 years ago by outofthisworld .
ISC · Original npm · Tarball · package.json
$ cnpm install express-reply 
SYNC missed versions from official npm registry.

#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);
            }
        }
    }))

Current Tags

  • 1.0.2                                ...           latest (2 years ago)

3 Versions

  • 1.0.2                                ...           2 years ago
  • 1.0.1                                ...           2 years ago
  • 1.0.0                                ...           2 years ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 2
Dependencies (2)
Dev Dependencies (0)
None
Dependents (0)
None

Copyright 2014 - 2017 © taobao.org |