什么是 Express.js 404 错误
404 错误是 HTTP 协议中的一种状态码,通常表示请求的资源不存在。在使用 Express.js 构建后端应用时,我们也会遇到 404 错误。Express.js 默认的行为是响应一个简单的文本内容 "Not Found" 和状态码为 404 的 HTTP 响应,但是在实际开发中,这样的响应并不符合我们的需求。因此,我们需要针对不同的场景来处理 404 错误。
如何解决 Express.js 404 错误
1. 自定义 404 错误响应
针对浏览器请求不存在的页面的场景,我们可以自定义一个 404 页面来响应。在 Express.js 中,我们可以通过如下代码来实现:
app.use((req, res) => { res.status(404).render('404', { title: '页面未找到', message: '很抱歉,您要访问的页面不存在' }) })
上述代码中,我们使用了 res.status(404)
来设置 HTTP 响应的状态码为 404,然后使用 Express.js 中的 res.render()
方法来渲染 404 页面。我们可以在 render 方法中通过向页面传递参数的方式来动态设置页面内容。
2. 针对 API 请求的 404 错误响应
针对 API 请求的 404 错误响应,我们可以通过设置一个中间件来进行处理。在 Express.js 中,我们可以通过如下代码来实现:
-- -------------------- ---- ------- --------------- ----- ---- ----- -- - ----- ----- - --- ---------- ------- ------------ - --- ----------- -- ------------- ---- ---- ----- -- - -- ------------------------------------ - ---------------------- ------ - -------- ----------- - -- - ---- - --------- - --
上述代码中,我们首先通过 app.use('/api')
来匹配以 /api
开头的请求路径,并使用 next()
将错误传递下去。然后,我们使用 app.use()
来设置一个全局的错误处理中间件,并通过 req.originalUrl.startsWith('/api')
来判断当前请求的路径是否以 /api
开头。如果是 API 请求,我们就以 JSON 格式返回错误信息,否则,我们将错误交给下一个中间件进行处理。
3. 静态资源的 404 错误响应
针对静态资源的 404 错误响应,我们可以在使用 express.static()
方法设置静态资源目录时,通过 fallthrough: false
的方式来禁止在未找到的情况下进行后续中间件的处理。具体的实现如下:
-- -------------------- ---- ------- -------------------------------- - ------------ ----- --- ------------- ---- ----- -- - ----- ----- - --- ---------- ------- ------------ - --- ----------- -- ------------- ---- ---- ----- -- - --------------------- -- ---------------------- --
上述代码中,我们在使用 express.static()
方法设置静态资源目录时,通过 { fallthrough: false }
来禁止在未找到的情况下进行后续中间件的处理。然后,我们使用 app.use()
设置一个全局的错误处理中间件,并根据错误的状态码来返回相应的响应。
总结
解决 Express.js 404 错误是后端开发中的常见问题。针对不同的场景,我们可以选择不同的处理方式,如自定义 404 页面、针对 API 请求的 404 错误响应、静态资源的 404 错误响应等。本文介绍了针对不同场景的解决方案和实现方法,并提供了示例代码来帮助读者更好地理解和运用。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64f3de2af6b2d6eab3d1abeb