【发布时间】:2025-12-19 14:30:11
【问题描述】:
我有一个 Node.JS 服务器,用于将 Android 应用程序连接到 SQL Server 数据库。它已经具有在收到 POST 请求时执行的功能。但是现在我想在我的应用程序中添加一个登录页面,它会发送一个带有用户名和密码的 POST 请求。但是我如何区分何时是登录的 POST 请求和何时是执行其他功能的 POST 请求?
【问题讨论】:
我有一个 Node.JS 服务器,用于将 Android 应用程序连接到 SQL Server 数据库。它已经具有在收到 POST 请求时执行的功能。但是现在我想在我的应用程序中添加一个登录页面,它会发送一个带有用户名和密码的 POST 请求。但是我如何区分何时是登录的 POST 请求和何时是执行其他功能的 POST 请求?
【问题讨论】:
您将有单独的路线,每种情况都有一条路线。
由于您使用的是 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
了解更多
【讨论】:
由于您使用的是带有 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);
【讨论】: