app.post() 没有注册 POST 请求

编程入门 行业动态 更新时间:2024-10-08 00:35:16

app.post() <a href=https://www.elefans.com/category/jswz/34/1616782.html style=没有注册 POST 请求"/>

app.post() 没有注册 POST 请求

我是 POST 方法的新手,我一直被困在这个问题上,似乎 app.post() 不起作用。我已经遵循了一些教程来尝试理解问题,但我不知道可能是什么问题。我可能误解了教程中的某些内容或犯了一个非常明显的错误。

我试图制作一个 HTML 表单,通过 POST 将其数据提供给服务器。看来问题是服务器没有读取数据,因为我可以在开发人员工具上看到发送了 POST,而且我还设法通过 PHP 服务器获取了数据。

我的 HTML 脚本

<!DOCTYPE html>
<html>
  <head>
    <title>schoolpartygames.tv</title>
    <link rel="stylesheet" href="/code-screen.css" type="text/css"/>
    
    
  </head>
  
  <body style="background-color: #00A6FF;">
    <p class="title">Schoolpartygames.tv</p>
    
    <form action="/Joining" method="post" onsubmit="return checkRoomCode();"> 
      <input class="text" type="text" maxlength="24" name="UserName" id="UserName" placeholder="Enter Username Here"> 
      <input class="text" type="text" maxlength="6" name="roomCode" id="roomCode" placeholder="Enter Room Code Here">
      <button class="joinbutton" type="submit">JOIN</button>
    </form>

  </body>
</html>

我的js脚本:

let express = require('express');
let bodyParser = require('body-parser');
const morgan = require('morgan');
const WebSocket = require('ws');
const http2 = require('http2');
const fs = require('fs');
const wsport = 8080;
const webport = 443;
const path = require('path');
const app = express();
var lobbies = [];
var helmet = require('helmet');
var rateLimit = require("express-rate-limit");
var sqlite3 = require('sqlite3').verbose();

const limiter = rateLimit({
  windowMs: 15 * 60 * 1000, // 15 minutes
  max: 100 // limit each IP to 100 requests per windowMs
});

var db = new sqlite3.Database('./database/users.db');


app.use(express.json());
app.use(express.urlencoded({extended: false}));
app.use(express.static('public'));
app.use(helmet());
app.use(limiter);

db.run('CREATE TABLE IF NOT EXISTS emp(UserName TEXT, roomCode TEXT)');

app.post('/Joining', (req, res) => { 
  var  UserName = (req.body.UserName); 
  var  RoomCode = (req.body.RoomCode);    
  db.serialize(()=>{
      db.run('INSERT INTO emp(UserName,RoomCode) VALUES(?,?)', [req.body.UserName, req.body.RoomCode], function(err) {
        if (err) {
          return console.log(err.message);
        }
        console.log("New user has been added");
        res.send("New user has been added into the database with code = "+req.body.GameCode+ " and Name = "+req.body.UserName);
      });
  console.log(` ${UserName}`)
  console.log(` ${RoomCode}`)

});
});

const server = http2.createSecureServer({
  "key": fs.readFileSync("private.pem"),
  "cert": fs.readFileSync("cert.pem"),
});

server.on("stream", (stream, headers) => {
  const url = headers[":path"];
  let filePath = "";

  if (url === "/") {
    filePath = "public/index.html";
  } else if (url === "/code-screen.css") {
    filePath = "public/code-screen.css";
  } else if (url === "/Joining") {
    filePath = "public/joining.html";
  } else if (url === "/code-screen.css") {
    filePath = "public/code-screen.css";
  } else {  
    filePath = "public/404NotFound.html"
  }
  
  if (filePath !== "") {
    const contentType = getContentType(filePath);

    fs.readFile(filePath, (err, data) => {
      if (err) {
        stream.respond({ "content-type": "text/plain", "status": 500 });
        stream.end("Internal Server Error");
      } else {
        stream.respond({
          "content-type": contentType,
          "status": 200,
        });
        stream.end(data);
      }
    });
  } else {
    stream.respond({ "content-type": "text/plain", "status": 404 });
    stream.end("File Not Found");
  }
});

function getContentType(filePath) {
  const fileExt = path.extname(filePath);

  switch (fileExt) {
    case ".html":
      return "text/html";
    case ".css":
      return "text/css";
    default:
      return "text/plain";
  }
}

server.listen(webport, () => {
  console.log(`HTTP/2 server started on port ${webport}`);
});

const wss = new WebSocket.Server({ port: wsport }, () => {
  console.log(`WebSocket server started on port ${wsport}`);
});

wss.on('connection', function connection(ws) {
  console.log("WebSocket connection established");

  ws.on('message', (data) => {
    data = data.toString(); // convert data to string
    console.log(`Received message: '${data}' with length ${data.length}`);
    
    if (data.replace(/\s+/g, '') === "CL") {
      console.log(`data is sending: = ${data}`);
      const generateCode = (length) => {
        const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
        let code = '';
        for (let i = 0; i < length; i++) {
          const randomIndex = Math.floor(Math.random() * characters.length);
          code += characters[randomIndex];
        }
    
        return code;
      }
    
      const code = generateCode(6);
      ws.send(`Your code is: ${code}`);
      console.log(`Your code is: ${code}`);
      lobbies.push(code);
      console.log(lobbies);
      console.log("sent");
    
    } else {
      console.log(`data = ${data}`);
      ws.send('Message received');
      console.log('not sent');
    }
  });
});



wss.on('listening', () => {
  console.log(`WebSocket server listening on port ${wsport}`)
});

wss.on('error', (error) => {
  console.error(`WebSocket server error: ${error.message}`)
});

process.on('uncaughtException', (error) => {
  console.error(`Uncaught exception: ${error.message}`);
  process.exit(1);
});

代码的相关部分:

var  UserName = (req.body.UserName); 
  var  RoomCode = (req.body.RoomCode);
  app.post('/Joining', (req, res) => { 
    db.serialize(()=>{
      db.run('INSERT INTO emp(UserName,GameCode) VALUES(?,?)', [req.body.UserName, req.body.GameCode], function(err) {
        if (err) {
          return console.log(err.message);
        }
        console.log("New user has been added");
        res.send("New user has been added into the database with code = "+req.body.GameCode+ " and Name = "+req.body.UserName);
      });
  console.log(` ${UserName}`)
  console.log(` ${RoomCode}`)

});
});
回答如下:

您正尝试在您的加入操作中从请求中加载

req.body.GameCode
,但不存在这样的元素。你的
form
有一个
roomCode

    <form action="/Joining" method="post" onsubmit="return checkRoomCode();"> 
      <input class="text" type="text" maxlength="24" name="UserName" id="UserName" placeholder="Enter Username Here"> 
      <input class="text" type="text" maxlength="6" name="roomCode" id="roomCode" placeholder="Enter Room Code Here">
      <button class="joinbutton" type="submit">JOIN</button>
    </form>

因此,您需要弄清楚

roomCode
是否对您有用,如果有用,请相应地更改您的服务器端。您还需要弄清楚
GameCode
是否对您有用,在这种情况下您需要调整您的
form
。我的猜测是您的
roomCode
中的
form
GameCode
相同并且这些名称不匹配,但是您需要根据我提供的方法来解决这个问题。

更多推荐

app.post() 没有注册 POST 请求

本文发布于:2024-05-13 15:45:58,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1759925.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:没有注册   app   post   POST

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!