在GET路由上处理POST请求(express.js)

时间:2017-06-10 00:05:08

标签: javascript node.js express request

我是新手,表达和节点在一起似乎被卡住了,似乎是一个简单的问题。我有一个使用GET的API路线。路线:

app.get('/api/v1/all', getAllWords);

然后在getAllWords回调函数内部,我想检查发送的请求是GET还是POST。这是我必须检查请求方法的代码:

function getAllWords(request, response) {
   let reply;
   if (request.method === 'GET') {
      console.log('This was a GET request');
      // handle GET here...
   }
   if (request.method === 'POST') {
      console.log('This was a POST request');
      reply = {
          "msg": "HTTP Method not allowed"
      };
      response.send(reply)
   }
}

当我使用Postman发送GET请求时,它的工作正常。但是在发送POST请求时,我会获得通用express.js" 无法POST / api / v1 / all "。

Postman screenshot

为什么response.send(reply)POST方法不起作用?

2 个答案:

答案 0 :(得分:1)

app.get(...)定义仅与GET方法匹配的端点。如果要处理POST方法,则必须在app.post(...)

中提供单独的中间件

答案 1 :(得分:0)

您可以使用app.all(...)来处理GETPOST个请求,但它也会接受其他类型的请求,例如PUTDELETE。我更喜欢将GETPOST请求分开。