首页 > 解决方案 > 使用 express nodejs rest api 样板创建新路由

问题描述

我是 expressjs 的新手,我打算将这个 样板用于我的 rest api 项目。我想知道如何扩展现有路由以更新或创建 rest api。开箱即用,如果我运行适用于http://localhost:8080/api/facets/的代码, 我想扩展路由,例如http://localhost:8080/api/facets/createhttp://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;
}

标签: javascriptnode.jsrestexpress

解决方案


我建议您在 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, newFacetsRou​​ter)" 其中 newFacetsRou​​ter 是从上面导入的路由器,你会看到你现在可以调用GET "/facets/get"而不是之前的GET "/facets". 您可以使用以下模式继续我为所有方法发布的代码:

router.["HTTP METHOD"]('/["ROUTE NAME"]', callback)

其中“HTTP METHOD”可以是:“get、post、put、delete”。“ROUTE NAME”是你想要的任何东西。而回调是http调用成功后执行的函数。

关于您发布的代码,您希望对其进行解释:它只是一个快速路由器,我们在其中导入另一个快速路由器,请再次阅读有关路由的快速文档。


推荐阅读