0

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

4

2 回答 2

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

学习更多关于

于 2020-01-26T21:44:31.797 回答
0

由于您使用的是带有 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);
于 2020-01-27T05:21:38.657 回答