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