使用这种简单的方法,即可避免手动在每个 Express 路由前添加“/api”前缀。
本文最初发布于coreycleary.me。这是我的内容博客的转载文章。我每隔一两周会发布新内容,如果您想直接在邮箱中接收我的文章,可以订阅我的新闻邮件!我还会定期发送速查表、其他开发者的优秀教程链接以及其他免费资源!
你是否曾因必须手动在每个 Express 路由的开头添加“/api”而感到沮丧?通常我看到这种情况有两种形式:
表格 1:
在app.js文件中:
app.use('/api/users', require('./routes/users'))
app.use('/api/posts', require('./routes/posts'))
app.use('/api/comments', require('./routes/comments'))
app.use('/api/subscriptions', require('./routes/subscriptions'))
表格 2:
在路由文件中:
router.post('/api/users', users.createUser)
router.post('/api/posts', blogpost.postBlogpost)
router.post('/api/comments', comment.postComment)
router.post('/api/subscriptions', subscription.addSubscription)
无论哪种方式——看起来都很混乱,如果不复制/粘贴,每次都必须记住添加,而且似乎应该有更好的方法。
我们来清理一下。
幸运的是,解决这个问题非常简单。
在路由文件中,从每个路由中删除“/api”。
const express = require('express')
const router = express.Router()
router.post('/users', users.createUser)
router.post('/posts', blogpost.postBlogpost)
router.post('/comments', comment.postComment)
router.post('/subscriptions', subscription.addSubscription)
module.exports = router
在app.js(或者server.js,无论您在哪里设置 Express 服务器):
const express = require('express')
const app = express()
const routes = require('./routes')
app.use('/api', routes) // routes is our routes file above
因此,我们不再需要手动在每个路由前添加“/api”,而是导入 Express 路由app.js并添加“/api”——这次只需添加一次!app.use()
这是如何运作的?
我们在这里所做的,本质上就是构建了一个管道。
让我们把 视为app我们的主应用程序,router把 (我们的路由文件)视为“子应用程序”。
当我们的应用程序收到 Web 请求时,它会app.use('/api', routes)首先执行。如果请求发送到类似“/api/blah/blah”的端点,它将匹配该端点app.use('/api', routes),然后从该端点路由到我们的子应用程序路由器,其中包含我们其余的路由。
因此,Express 会为你构建这个管道,你不再需要手动将“/api”添加到每个路由中了!
最后一件事!
我正在撰写大量新内容,旨在帮助大家更容易理解 Node 和 JavaScript。之所以说“更容易理解”,是因为我认为它们不必像有时那样复杂。如果您喜欢这篇文章并觉得它对您有所帮助,请点击此链接订阅我的新闻邮件!
文章来源:https://dev.to/ccleary00/avoid-manually-prepending-api-to-every-express-route-with-this-simple-method-1m44