javascript - 使用 express nodejs rest api 样板创建新路由
问题描述
我是 expressjs 的新手,我打算将这个 样板用于我的 rest api 项目。我想知道如何扩展现有路由以更新或创建 rest api。开箱即用,如果我运行适用于http://localhost:8080/api/facets/的代码, 我想扩展路由,例如http://localhost:8080/api/facets/create或http://localhost :8080/api/方面/列表
我对文件 express-es6-rest-api/src/api/index.js 和 express-es6-rest-api/src/api/facets.js 感到困惑
请解释以下代码:
export default ({ config, db }) => {
let api = Router();
// mount the facets resource
api.use('/facets', facets({ config}));
// perhaps expose some API metadata at the root
api.get('/', (req, res) => {
console.log(api)
res.json({ version });
});
return api;
}
解决方案
我建议您在 src/api 中创建另一个构面文件,并尝试创建自己的快速路由器,而不需要任何库,如“resource-router-middleware”。
请阅读https://expressjs.com/en/guide/routing.html。
在这里,您可以看到创建另一个快速路由器是多么容易,您可以在其中导入index.js
和使用,而不是基于“resource-router-middleware”的现有路由器。这样您就可以完全控制路线,包括您想要的任何名称。
我将举一个简单的例子来说明我在 repo 中最简单的路线的意思:
import { Router } from 'express'
let router = Router()
router.get('/get', (req, res) => {
res.json(facets)
})
export default router
如果你在 "index.js" 中导入这个路由器并在里面使用它: "api.use('/facets, newFacetsRouter)" 其中 newFacetsRouter 是从上面导入的路由器,你会看到你现在可以调用GET "/facets/get"
而不是之前的GET "/facets"
. 您可以使用以下模式继续我为所有方法发布的代码:
router.["HTTP METHOD"]('/["ROUTE NAME"]', callback)
其中“HTTP METHOD”可以是:“get、post、put、delete”。“ROUTE NAME”是你想要的任何东西。而回调是http调用成功后执行的函数。
关于您发布的代码,您希望对其进行解释:它只是一个快速路由器,我们在其中导入另一个快速路由器,请再次阅读有关路由的快速文档。
推荐阅读
- flutter - 带有 TextField 的 setState 的 onChanged 方法不会更新结果?
- cocoapods - 是什么控制 CocoaPods 是显示登录页面还是仅显示 Git 存储库的链接?
- sql - 连接到多个服务器和数据库并运行相同的 SQL 语句
- vega - 在 vega 中将纪元时间戳转换为日期
- phpspreadsheet - 如何不使用 phpspreadsheet html 阅读器在单元格值中写入注释
- jenkins-pipeline - 在 Jenkinsfile 脚本内的字符串中添加括号会导致语法错误
- python - 如何使用 Tensorboard 绘制损失和准确度
- sql - 如何改进/加速 SQL 查询
- iis - 使用不同别名登录时,相同的 IIS 本地主机标记为不同的名称
- image-processing - 为两个大致相同的蒙版图像创建单应矩阵