Node.js服务器:从POST请求获取正文

时间:2016-10-28 14:02:42

标签: javascript node.js express post server

我创建了一个带有node.js和express.js的服务器但是如果我发送一个POST请求并尝试检查正文,它总是说正文是空的。这是我的代码:

app.js:

var express = require('express');

var app = express();

app.set('port', process.env.PORT || 61000);

require('./routes/routes.js')(app);

var server = app.listen(app.get('port'), function () {

    var port = server.address().port;

    console.log('Server runs on port %s', port);

});

路由/ routes.js:

module.exports = function(app) {        

     app.get('/', function(req, res) { 
          res.status(200).json({"response": "Hello!"});    
     });     

     app.post('/', function (req, res) {

         if (req.body != null) {
             res.status(200).json("Success");
         }

         res.status(200).json("Error");
     });
};

如果我现在在www.hurl.it上发出POST请求并添加一个带有“Test”之类文本的正文,它会给我回复“Error”,但它应该给我回复“Success”,因为身体不是空的。

如果我将“body-parser”模块添加到我的应用程序中,如下所示:

var bodyParser = require('body-parser');
...
app.use(bodyParser.json());
即使我让身体空虚,它也给了我“成功”。如果我返回req.body,则响应为:{}如果我添加一个正文,则它也是{}

有人知道出了什么问题吗?

1 个答案:

答案 0 :(得分:0)

我认为它总是遇到错误的情况。 试试这个:

library(shiny)
library(shinyjs)

ui <- tagList(
  useShinyjs(),
   navbarPage(
   "shinyjs with navbarPage",
   tabPanel("tab1",
         actionLink(inputId = 'link',label = 'Fast Forward')
         ),
 tabPanel("tab2",
         actionButton("button", "Click me"),
         textInput(inputId = "hello", label='',value = "Hello!")
         )
 )
)

server <- function(input, output, session) {
  observeEvent(input$link, {
  runjs('$("#link").click();')
})

observeEvent(input$button,{
  toggle("hello")
})
}

shinyApp(ui, server)