我是expressjs的新手,我计划在我的rest api项目中使用this样板。我想知道如何扩展现有路由以更新或创建rest api。如果我运行适用于http://localhost:8080/api/facets/的代码,我想像http://localhost:8080/api/facets/create或http://localhost:8080/api/facets/list那样扩展路由
我在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;
}
发布于 2020-01-31 15:11:23
我建议您在src/api中创建另一个facets文件,并尝试创建您自己的express路由器,而不使用任何库,如“resource- router -”。
请阅读https://expressjs.com/en/guide/routing.html。
在这里,您可以看到创建另一个express路由器是多么容易,您可以将其导入到index.js
中并使用,而不是使用基于“资源-路由器-中间件”的现有路由器。这样,您就可以完全控制路由,包括您想要的任何名称。
我将给出一个简单的示例,说明我在存储库中使用最简单的路径:
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方法“可以是:"get,post,put,delete”。“路由名称”是您想要的任何名称。回调是在http调用成功之后执行的函数。
关于你发布的代码,你希望得到解释:这只是一个express路由器,我们在其中导入了另一个express路由器,再次请阅读关于路由的express文档。
发布于 2020-01-31 14:38:57
很难掌握你真正需要帮助的是什么。您是需要帮助理解项目和代码,还是希望了解如何为API创建新的端点?因此,让我向您展示一个简单的小CRUD api,用于写出的facets。
安装express和正文解析器
npm i -S express
npm i -S body-parser
设置服务器,添加正文解析器,并注册您希望使用的端点。
const express = require('express');
const json = require('body-parser');
const facets = [];
const app = express();
app.use(json());
app.get('/api/facets', (req, res) => {
res.send(facets);
});
app.post('/api/facets', (req, res) => {
facets.push(req.body);
res.send(req.body);
});
app.put('/api/facets/:index', (req, res) => {
facets[req.param.index] = req.body;
res.send(req.body);
});
app.delete('/api/facets/:index', ((req, res) => {
facets.splice(req.param.index, 1);
res.send(facets);
}));
app.listen(1337, () => {
console.log('Server is runing');
});
https://stackoverflow.com/questions/60005057
复制