如何在koa项目中区分页面请求和api请求?

发布于 2022-09-06 19:35:33 字数 1135 浏览 13 评论 0

我的项目后端是koa,前端是vue的SPA。所有的页面请求我用koa-router是这样配的:

router.get(/\/\.*/, async ctx => {
    ctx.body = await ctx.render('app/index.html')
})

但是这样一来,所有的api请求也会返回index.html

clipboard.png

顺便再问一个和koa-jwt相关的问题,其实也是路径匹配的问题,因为我只有某些请求需要鉴权,像页面请求、静态资源和auth相关的接口是不需要鉴权的,我现在是这样写的:

// jwt鉴权
app.use(koajwt({
    secret: host
}).unless({
    path: [/\/api\/admin\/auth/, /\/api\/auth/, /\/admin/, /\/server\/static/, /^$|^\/$/]
}))

我觉得在unless里配那么一大段有点奇怪,想问下有什么更优雅的方法?

-------------------update-----------------------

clipboard.png

clipboard.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

2022-09-13 19:35:33

这个是我自己写的 demo koa, 我用它 只起api和静态支持上传图片(这个其实也可以只让nginx去代理图片, 不让node去做静态资源相关的事情)。
图片描述...

你可已配置nginx 反向代理代理接口, 类似这种

        server {
          listen       80;
          server_name xxx.cn;
           #location / {
           #         proxy_pass http://127.0.0.1:9000;
           # }
       location / {
              root  F:\web\backer\\react\dist;
             try_files $uri $uri/ /index.html;
        }    
       location ~ ^/api/(.*) {
        proxy_pass http://127.0.0.1:3000/$1;    
        proxy_set_header Host      $host;
           proxy_set_header X-Real-IP $remote_addr;
           }    

        }

把nginx 配置截下图。这么配置是 root F:webbacker\reactdist; try_files $uri $uri/ /index.html; 这么配置是 在 F:webbacker\reactdist 这个目录下, 有你静态 index.html,在没有其他配置的前提下,访问的url永远 是指向 index.html;应该是 这样的.


自己的网站 单页spa
图片描述
图片描述

根据 我自学nginx(菜鸟)
这个两个日志很重要。
clipboard.png

淡莣 2022-09-13 19:35:33

api 代码的路由放到前面,最后这个中间件作为 fallback 就好了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文