首页 > 解决方案 > 如何在网站的 url 中“创建”不同的路径,并为每个路径调用不同的“状态”?

问题描述

我用 javascript 写了一个程序,你可以用它来画,用画布。现在我用nodejs创建了一个网络服务器并尝试实现,你可以在这个网站上画一些东西,对于这个特定的图片,URL会创建一个额外的路径,你可以调用它,你可以在你上次停止的同一点到达图片时间绘图。这是代码:

var http = require("http");
var fs = require('fs');

http.createServer(function (request, response) {
    console.log(request.method, request.url);
    console.log("  ", request.url.substring(1));
    if (request.url === '/') request.url = '/draw.html';
    fs.readFile(request.url.substring(1), function (err, data) {
        console.log("Datei lesen", err);
        response.writeHead(200, {'Content-Type': 'text/html'});
        if (err) {
            response.write("Kann nicht geladen werden: "+request.url);
        } else {
            response.write(data);
        }
        response.end();
    });
}).listen(8081);

这只是给出一个“页面”。我正在寻找类似http://127.0.0.1:8081/image123/draw.html → 的内容,然后您会看到 ID 为 123 的图片。因此,您可以为每张图片创建不同的路径,这样您就可以访问每张图片。

也许是这样的:

if (url.includes('bild') && /[0-9]/.test(url)) {
    request.url = ???;
}

谢谢!

标签: javascriptnode.js

解决方案


为此,您需要像 Express JS 这样的中间件。在 Express JS 中,您可以使用参数化查询:

const express = require("express");
app = express();

app.get("/:image/draw.html", (req, res) => {
  console.log(req.params.image); // image123
  // So, if you need that 123, then you can do:
  console.log(parseInt(req.params.image.replace("image", ""), 10)); // 123
});

上面函数的原因replace()是它只替换一次:

» "image123image".replace("image", "");
« "123image"

推荐阅读