Handling text/plain in Express (via connect)?

前端 未结 5 769
轻奢々
轻奢々 2020-12-15 01:37

I am using Express 3, and would like to handle text/plain POSTs.

Express 3 uses connect\'s bodyParser now (I think the old Express code got moved t

相关标签:
5条回答
  • 2020-12-15 02:11

    I would just make a module similar to the json.js middleware module and just don't bother converting the buf data into anything else. Wrap it into a plain.js file, apply some decent "don't repeat yourself" refactoring, and submit a pull request to connect. Seems generally handy. However, note that while convenient, large enough request bodies will require streaming straight to disk at some point so you don't consume all the memory in your node server.

    0 讨论(0)
  • 2020-12-15 02:20

    You may try this :

    var expressApi= (req, res,params)=>{
        console.log('req.body',params);
        var body = '';
        req.on('data', function (data) {
            body += data;
        });
        req.on('end', function () {
            res.write({status:200,message:'read data'}); 
        }); 
    }
    
    0 讨论(0)
  • 2020-12-15 02:22

    https://gist.github.com/3750227

    app.use(function(req, res, next){
      if (req.is('text/*')) {
        req.text = '';
        req.setEncoding('utf8');
        req.on('data', function(chunk){ req.text += chunk });
        req.on('end', next);
      } else {
        next();
      }
    });
    

    Will add the text as req.text

    0 讨论(0)
  • 2020-12-15 02:25

    With bodyParser as dependency, add this to your app.js file.

    var bodyParser = require('body-parser');
    var app = express();
    app.use(bodyParser.text());
    

    Happy Noding.

    0 讨论(0)
  • 2020-12-15 02:36

    In express.js "^4.16..." the following code works fine for me:

    // parse an HTML body as a string
    app.use(bodyParser.text({ type: 'text/*' }))
    

    The extended piece of the code is below:

    // parse an HTML body as a string
    app.use(bodyParser.text({ type: 'text/*' }))
    
    // Enable CORS for ExpressJS
    app.use((req, res, next) => {
      res.header('Access-Control-Allow-Origin', '*')
      res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS')
      res.header('Access-Control-Allow-Credentials', true)
      res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept, Methods, Credentials')
      next()
    })
    
    
    // Api url 
    app.post('/api/myApi', (req, res) => {
    
      const bodyJson = JSON.parse(req.body)
      // do something
    
    }
    
    0 讨论(0)
提交回复
热议问题