我尝试过修改节点服务器,下面是我尝试过的一个服务器:
const http = require("http");
http.createServer((req, res) => {
console.log(req);
}).listen(8080);
这个服务器什么都不做,除了告诉我有人试图连接。我可以看到,如果我尝试通过浏览器或curl -X GET localhost:8080
连接,服务器记录连接,而浏览器和curl只是挂起。
现在我用它的hello world来表达:
const express = require("express");
const app = express();
const port = 8080;
app.get("/", (req, res) => {
res.status(200).send("Hello");
});
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`);
});
在预期的路由和方法上发送预期的响应。然而,现在如果我决定访问我没有处理的东西,例如GET localhost:8080/ABC
或POST localhost:8080
,我得到一个HTML页面:
$ curl -X GET localhost:8080/ABC
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot GET /ABC</pre>
</body>
</html>
如何配置express默认不响应任何请求?
这是Express的默认特性,如果任何路由在后端不可用,它将抛出404并请求查询如果query
$ curl -X GET localhost:8080/ABC
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot GET /ABC</pre>
</body>
</html>
如果你不想不响应路由之外的任何请求,使用This
app.get("/", (req, res) => {
res.status(200).send("Hello");
});
app.use(function (req, res, next) {
console.log("Came Here)
});
将这个中间件设置在路由的底部,这样任何请求的路由都不可用,console.log("Came here")但这是不好的做法和弱的用户体验,我建议你发送一个静态404页面,而不是不回复
app.get("/", (req, res) => {
res.status(200).send("Hello");
});
app.use(function (req, res, next) {
res.status(404).render("404"); //using template If you want it simple Than //res.send(`<html><body>404 page does not exist</body></html>`)
});
可以使用错误处理程序。
https://stackblitz.com/edit/node-9hnac1?file=index.js
//error handler
app.use((err, req, res) => {
console.log(req);
});