【问题标题】:How can I differentiate two POST requests in Node.JS?如何区分 Node.JS 中的两个 POST 请求?
【发布时间】:2025-12-19 14:30:11
【问题描述】:

我有一个 Node.JS 服务器,用于将 Android 应用程序连接到 SQL Server 数据库。它已经具有在收到 POST 请求时执行的功能。但是现在我想在我的应用程序中添加一个登录页面,它会发送一个带有用户名和密码的 POST 请求。但是我如何区分何时是登录的 POST 请求和何时是执行其他功能的 POST 请求?

【问题讨论】:

    标签: node.js api http


    【解决方案1】:

    您将有单独的路线,每种情况都有一条路线。

    由于您使用的是 Node.js HTTP 模块,您可以这样做:

    const http = require('http')
    const url = require('url')
    
    const server = http.createServer((req, res) => {
      res.writeHead(200, { 'Content-Type': 'text/plain' })
    
      // Only allow POST
      if (req.method !== 'POST') res.end('Wrong Method.')
    
      // Get url path
      const path = url.parse(req.url).pathname
    
      if (path === '/login') {
        let body = ''
        req.on('data', rawData => {
          body += rawData
        })
    
        req.on('end', () => {
          const user = JSON.parse(body)
          /* Do login here */
          res.end(`Login in ${user.username}`)
        })
      } else if (path === '/data') {
        let body = ''
        req.on('data', rawData => {
          body += rawData
        })
    
        req.on('end', () => {
          const data = JSON.parse(body)
          /* Do db stuff here */
          res.end(`Adding ${data.title} to database`)
        })
      } else {
        res.statusCode = 404
        res.end('Wrong Endpoint.')
      }
    })
    
    server.listen(8080)
    

    这假设您以 JSON 格式发送数据。如果您从 html 表单作为表单数据(例如登录表单)发送它,您应该签出这个 npm 库来解析您的传入数据: https://www.npmjs.com/package/body

    了解更多

    【讨论】:

    • 我使用 Node.JS 和 HTTP 库,我该如何使用它?
    • @EmilioSanches 我将答案更改为带有 h​​ttp 模块的示例。
    【解决方案2】:

    由于您使用的是带有 HTTP 库的 Node,您可以使用 url 节点模块来获取 url 路径名,即

    var http = require("http");
    var url = require("url");
    
    var server = http.createServer(function(req, res) {
      var page = url.parse(req.url).pathname;
      console.log(page);
      res.writeHead(200, { "Content-Type": "text/plain" });
      if (page == "/") {
        res.write(`You are at home ${req.method}`);
      } else if (page == "/users") {
        res.write("/users api end point");
      } else if (page == "/login") {
        res.write("/login api end point");
      }
      res.end();
    });
    server.listen(3000);
    

    【讨论】: