node.js vanilla服务器中的重置请求队列

发布于 2025-02-10 07:05:38 字数 2006 浏览 1 评论 0原文

我有一个程序,可以接受包含数字的机构的发布请求。我的程序检查是身体中的数字是否是质数。一切都是第一次,但是每次之后,该程序都会记住过去的帖子也请求检查。 如何重置请求队列,以便我的程序只会检查最新的帖子请求?

这是代码:

import { createServer } from "http";
import { parse } from "querystring";
import { url } from "inspector";
import { port } from "./config.js";
let body = "";
let checkNumber = true;
const PORT = process.env.PORT || port;

const server = createServer(async (req, res) => {
  res.statusCode = 200;
  res.setHeader("Content-Type", "text/html");
  const FORM_URLENCODED = "application/x-www-form-urlencoded";
  const POST_PATH = "api/numbers/prime/validate";
  const GET_PATH = "api/numbers/prime";

  if (req.headers["content-type"] === FORM_URLENCODED) {
    //console.log(req.method);
    if (req.method === "POST") {
      req.on("data", (chunk) => {
        body += chunk.toString();
      });
  }

  if (req.url === `/${POST_PATH}`) {
    let re = parse(body);

    await checkValuesInObject(re);
    console.log(checkNumber);
    res.end(`${checkNumber}`);
  }
  res.end();
});

server.listen(PORT, () => {
  console.log(`listening on port ${PORT}`);
});

async function checkIfFirstNumber(number) {
  if (number == 1) {
    return false;
  } else {
    for (let i = 2; i < number - 1; i++) {
      if (number % i === 0) {
        return false;
      }
    }
    return true;
  }
}

async function checkValuesInObject(obj) {
  const amount = Object.keys(obj);

  for (let i = 0; i < amount.length; i++) {
    let valueAmount = obj[Object.keys(obj)[i]];
    for (let j = 0; j < valueAmount.length; j++) {
      checkIfFirstNumber(valueAmount[j]).then((answer) => {
        console.log(`answer: ${answer}`);
        if (!answer) {
          checkNumber = false;
        }
      });
    }
  }
  checkNumber = true;
}

async function printPrime(number) {
  let numbers = "";
  for (let i = 2; i <= number; i++) {
    const check = await checkIfFirstNumber(i);
    if (check) {
      numbers += i + " ";
    }
  }
  return numbers;
}

I have a program that accepts POST requests with a body that contains numbers. My program checks is the numbers in body are prime numbers or not. Everything is well the first time, but every time after that the program remembers the past POST requests a checks them as well.
how can I reset the request queue so my program will only check the newest POST request?

here is the code:

import { createServer } from "http";
import { parse } from "querystring";
import { url } from "inspector";
import { port } from "./config.js";
let body = "";
let checkNumber = true;
const PORT = process.env.PORT || port;

const server = createServer(async (req, res) => {
  res.statusCode = 200;
  res.setHeader("Content-Type", "text/html");
  const FORM_URLENCODED = "application/x-www-form-urlencoded";
  const POST_PATH = "api/numbers/prime/validate";
  const GET_PATH = "api/numbers/prime";

  if (req.headers["content-type"] === FORM_URLENCODED) {
    //console.log(req.method);
    if (req.method === "POST") {
      req.on("data", (chunk) => {
        body += chunk.toString();
      });
  }

  if (req.url === `/${POST_PATH}`) {
    let re = parse(body);

    await checkValuesInObject(re);
    console.log(checkNumber);
    res.end(`${checkNumber}`);
  }
  res.end();
});

server.listen(PORT, () => {
  console.log(`listening on port ${PORT}`);
});

async function checkIfFirstNumber(number) {
  if (number == 1) {
    return false;
  } else {
    for (let i = 2; i < number - 1; i++) {
      if (number % i === 0) {
        return false;
      }
    }
    return true;
  }
}

async function checkValuesInObject(obj) {
  const amount = Object.keys(obj);

  for (let i = 0; i < amount.length; i++) {
    let valueAmount = obj[Object.keys(obj)[i]];
    for (let j = 0; j < valueAmount.length; j++) {
      checkIfFirstNumber(valueAmount[j]).then((answer) => {
        console.log(`answer: ${answer}`);
        if (!answer) {
          checkNumber = false;
        }
      });
    }
  }
  checkNumber = true;
}

async function printPrime(number) {
  let numbers = "";
  for (let i = 2; i <= number; i++) {
    const check = await checkIfFirstNumber(i);
    if (check) {
      numbers += i + " ";
    }
  }
  return numbers;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文