nodejs做后端api,这样的路由,有没有更好的实现?

新手上路,请多包涵

我之前写php,最近刚接触到node.js Express的知识

前端:用GET方法请求,url是localhost/api/test.js。例如

axios.get('//localhost/api/test.js?word=123')

服务端路由:我没有找到案例,我的想法是应该是运行/api/test.js,然后输出运行的值给前端,于是我把/api/test.js文件写成这个样子:

module.exports = async function ($GET) {
  return $GET.word // return 123
}

然后路由这么写(Express)

// 引入框架,创建应用...

app.use('/api', apiRouter)

apiRouter
    .get('/:fileName', async function(req, res) {
        const apiFn = require(path.join(__dirname, `../api/${req.params.fileName}`))

        const $GET = req.query || {}
        const apiRes = await apiFn($GET)

        res.send(apiRes)
    }

这样前端通过接口就获得了123的文本。

请问我这个思路是正确的或者常规思路吗?是否有现成的轮子,或者默认的写法?谢谢。

阅读 2.8k
3 个回答

不是。

正常的写法应该是:

  1. 只有一个入口 index.js
  2. 响应函数你可以自己组织
  3. 针对不同请求调用不同函数

这个不怎么符合express的开发原则
整个express只有一个index.js入口,其它功能js文件都是注册为组件,通过路由器来调用实际处理js,而不是直接暴露调用。

express想咋写就咋写,原作者们觉得他不纯粹,另起炉灶搞起了koa,所以压根就没有什么圣经

如果你想找的是某种工程范式或者说best practice,那么直接看nestjs吧 如果对springboot那一套不反感的话。

推荐问题